如何通过PHP数组当地PowerShell脚本(How to pass php array to l

2019-10-16 22:39发布

我写的是自动的WordPress安装PowerShell脚本。 这个脚本会由多人创建自己的网站时,和身份证想补充一点额外的功能使用。

我想有我同行访问PHP页面将允许他们挑选的主题和插件为他们的网页,然后通过他们的选择(我假定通过阵列的最简单的)到我的PowerShell脚本。 PowerShell脚本必须处理这种情况的原因是因为他们已经选择了文件之后,PowerShell脚本可以连接到内部服务器,并处理其余部分。

我想我的问题有两个部分; 第一个是在上述甚至可能吗? 如果是这样它看起来像来处理这个问题的一个合乎逻辑的方式?

二是如何真正实现这一目标? 下面是我的PHP / HTML代码来处理,希望这将能够数组传递给我的脚本下载页面。 (从用于测试的“临时”的网站下面的下载代码,并没有真正达到我的要求)

<?php

$val=$_POST['theme']; 
if($val == 'aa') {
header('Content-disposition: attachment; filename=all-in-one-slideshow.zip');
header('Content-type: application/zip');
$url  = 'http://mypage.com/wordpressFiles/all-in-one-slideshow.zip';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_FILE, $path);
$data = curl_exec($ch);
curl_close($ch);
fclose($fp);
} else if($val == 'bb') {
} else {
}
?>


<form action="download.php" method="post">
<select name="theme" id="theme" class="select-list">
<option value="\">Choose A Theme</option>                                       
<option value="aa">All-In-One-Slideshow</br>
<option value="bb">BB</br>
</select>   
<input type="submit" value="Download" />
</form>

预先感谢您的任何帮助。

Answer 1:

如果直接从Web服务器执行的PowerShell脚本,你可以通过一个系统调用的参数( exec() passthrough() shell_exe()powershell.exe 。 你只需要确保参数在同一顺序传递的PowerShell的执行它们。

如果参数列表或数据就太长了,你可以创建一个临时文件。 最好的办法是做一个基于定界符设置(如CSV ):您创建从PHP数组的文本文件,保存(现在的string )到该文件,然后在PowerShell中,您块文件周围相同分隔符。 您可以使用serialize()也一样,但我不确定是否有能力unserialize()在PowerShell中。

当然,使用上述方法,PowerShell的只需要一个参数,您存储阵列的临时文件的路径。

此外,你应该看看下面的问题,因为它讨论了如何命令行参数传递给一个PowerShell PS1文件 。



文章来源: How to pass php array to local powershell script