如何将php数组传递给本地PowerShell脚本

时间:2012-07-05 17:10:07

标签: php wordpress powershell download

我正在编写一个PowerShell脚本,可以自动设置Wordpress。这个脚本在创建他们的网站时将由多人使用,并且id喜欢添加一些额外的功能。

我想让我的同伴访问一个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>

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

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

如果参数列表或数据太长,您可以创建临时文件。最好的方法是进行基于分隔符的设置(如CSV):使用PHP从数组创建文本文件,将其(现在string)保存到文件中,然后在PowerShell中,你将文件分块围绕相同的分隔符。您也可以使用serialize(),但我不确定PowerShell中是否有unserialize()的功能。

当然,使用上面的方法,PowerShell只需要一个参数,即存储数组的临时文件的路径。

此外,您应该在讨论How to pass command-line arguments to a PowerShell ps1 file时查看以下问题。