1

我正在编写一个自动设置 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>

预先感谢您的任何帮助。

4

1 回答 1

0

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

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

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

此外,您应该查看以下问题,因为它讨论了如何将命令行参数传递给 PowerShell ps1 文件

于 2012-07-05T17:24:11.740 回答