如何将PHP数组传递给本地PowerShell脚本
我正在写一个PowerShell脚本来自动完成Wordpress的设置。这个脚本在创建他们的网站时会被多个人使用,并且id会添加一些额外的功能。如何将PHP数组传递给本地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>
预先感谢您的任何帮助。
如果您直接从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。
谢谢您的回复。 我真的很喜欢csv的想法,因为它似乎相对容易实施和维护。我会阅读它并给出一个镜头。 – G3TH 2012-07-05 17:40:24