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


How to pass php array to local powershell script

我正在编写一个自动设置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 文件时,还应查看以下问题。