我正在编写一个自动设置Wordpress的Powershell脚本。 此脚本将由多个人在创建他们的网站时使用,并且 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>
提前感谢您的任何帮助。
如果你直接从Web服务器执行PowerShell脚本,你可以传递带有系统调用(exec()
、passthrough()
、shell_exe()
)的参数来powershell.exe
。你只需要确保参数的传递顺序与PowerShell执行它们的顺序相同。
如果参数列表或数据太长,可以创建临时文件。最好的方法是进行基于分隔符的设置(如CSV
):使用 PHP 从数组创建一个文本文件,将其(现在string
)保存到文件中,然后在 PowerShell 中,围绕相同的分隔符对文件进行分块。您也可以使用serialize()
,但我不确定是否有能力在PowerShell中unserialize()
。
当然,使用上述方法,PowerShell 只需要一个参数,即存储数组的临时文件的路径。
此外,在讨论如何将命令行参数传递给 PowerShell ps1 文件时,还应查看以下问题。