将参数从PHP传递到Powershell exec

将参数从PHP传递到Powershell exec,php,powershell,parameter-passing,Php,Powershell,Parameter Passing,我正在尝试编写一个PHP脚本,允许我选择一些文件从预定位置下载。我希望我的脚本将数组传递给前面编写的Powershell脚本,并让我的Powershell脚本处理下载(基本上php文件只需要告诉Powershell文件需要下载什么)。 我看了一些选项,似乎exec是我应该使用的命令(因为我不关心命令行输出,所以我不需要shell\u exec) 到目前为止,我已经关闭了安全模式,以允许我使用此命令。我还应该注意,php文件将从服务器上运行,但是powershell文件位于本地计算机上 到目前为止

我正在尝试编写一个PHP脚本,允许我选择一些文件从预定位置下载。我希望我的脚本将数组传递给前面编写的Powershell脚本,并让我的Powershell脚本处理下载(基本上php文件只需要告诉Powershell文件需要下载什么)。 我看了一些选项,似乎
exec
是我应该使用的命令(因为我不关心命令行输出,所以我不需要
shell\u exec

到目前为止,我已经关闭了
安全模式,以允许我使用此命令。我还应该注意,php文件将从服务器上运行,但是powershell文件位于本地计算机上

到目前为止,处理参数传递的代码片段如下所示:

if(isset($_POST['formSubmit'])) 
{
    $choosePlugin = $_POST['wpPlugin'];
    $chooseTheme = $_POST['wpTheme'];

    if(isset($_POST['wpTheme'])) 
    {
        echo("<p>You selected: $chooseTheme</p>\n");
        exec('powershell.exe C:\Wordpress Setup\setupThemes.ps1 $chooseTheme');

    } 
    else 
    {
        echo("<p>You did not select a theme</p>\n");
    }
if(isset($\u POST['formSubmit']))
{
$choosePlugin=$\u POST['wpPlugin'];
$chooseTheme=$_POST['wpTheme'];
如果(isset($_POST['wpTheme']))
{
echo(“您选择的:$chooseTheme

\n”); exec('powershell.exe C:\Wordpress Setup\setupThemes.ps1$chooseTheme'); } 其他的 { echo(您没有选择主题

\n”); }
我有点困惑应该在
exec
中放入什么。当我运行上述代码时,没有错误,但什么也没有发生。我对此有点陌生,因此如果需要更多信息,我深表歉意。感谢您的帮助。

尝试:

echo exec('powershell.exe C:\\Wordpress Setup\\setupThemes.ps1 $chooseTheme');
要查看powershell.exe的结果(记住double\),还请确保将绝对路径放在exe文件中:

 echo exec('c:\\PATH_TO_POWERSHELL.EXE\\powershell.exe C:\\Wordpress Setup\\setupThemes.ps1 $chooseTheme');

如果要传递变量的内容,我想应该使用双引号来实际展开它。此外,还应该引用脚本名称,因为路径包含空格:

exec("powershell.exe \"C:\Wordpress Setup\setupThemes.ps1\" $chooseTheme");

我已将代码更改为:echo exec('C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe“C:\\Wordpress Setup\\setupThemes.ps1“$ChooseSheme 2>&1”);并且我收到错误:sh:C:WindowsSystem32WindowsPowerShellv1.0powershell.exe:command not found By command not found我假设这意味着服务器正在尝试运行脚本,但没有访问我的本地计算机的权限?很抱歉,再次无法确定此问题的解决方案。请检查apache(或IIS)是否用户在windows folderyes中具有读取权限,这似乎是权限问题,请参见php.net页面中的以下注释:(关于windows和exec)