2012-07-05 90 views
1

我正在写一个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> 

预先感谢您的任何帮助。

回答

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

+0

谢谢您的回复。 我真的很喜欢csv的想法,因为它似乎相对容易实施和维护。我会阅读它并给出一个镜头。 – G3TH 2012-07-05 17:40:24

相关问题