【问题标题】:How to pass php array to local powershell script如何将php数组传递给本地powershell脚本
【发布时间】:2012-07-06 03:28:43
【问题描述】:

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

提前感谢您的帮助。

【问题讨论】:

    标签: php wordpress powershell download


    【解决方案1】:

    如果您直接从 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 的想法,因为它看起来相对容易实现和维护。我会仔细阅读并试一试。
    猜你喜欢
    • 1970-01-01
    • 2011-08-01
    • 2015-12-19
    • 1970-01-01
    • 2018-02-23
    • 2020-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多