从PHP运行Powershell命令

时间:2014-03-07 00:44:44

标签: php iis powershell

我正在尝试从我的网络服务器上的php文件中运行PowerShell命令。

这是我的php代码:

<?php
$query = shell_exec('C:\\Windows\\syswow64\\WindowsPowerShell\\v1.0\\powershell.exe -command Get-Host');
echo $query;
?> 

我得到的结果是HTTP错误500 - C:\ PHP \ php-cgi.exe - FastCGI进程超出配置的活动超时 - 错误代码0x80070102

执行测试以验证shell_exec和php是否正常运行(我在设置环境时没有搞砸了)。我也试过这个php:

<?php
$query = shell_exec('dir c:\\');
echo $query;
?>

这很有效,如果你从windows中的命令提示符运行dir c:\ command,页面源看起来就像你期望的那样。

我在stackoverflow以及technet上看过其他几篇文章,似乎无法确定是什么导致这个超时。当我从命令提示符运行相同的命令时,结果非常快。

以下是在命令提示符下手动执行相同命令的结果(同样是您所期望的):

C:\>C:\Windows\syswow64\WindowsPowerShell\v1.0\powershell.exe -command Get-Host


Name             : ConsoleHost
Version          : 2.0
InstanceId       : 9a24a372-f0a3-4a79-b9fd-1e180e9a8069
UI               : System.Management.Automation.Internal.Host.InternalHostUserI
               nterface
CurrentCulture   : en-US
CurrentUICulture : en-US
PrivateData      : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
IsRunspacePushed : False
Runspace         : System.Management.Automation.Runspaces.LocalRunspace

关于我的环境:

我在Windows 2008 R2 SP1标准服务器上运行IIS 7.5。

服务器是独立的(不属于域名)。

我安装了PHP 5.5.9并正常工作。 phpinfo()返回预期的页面,没有任何明显的错误。

非常感谢任何帮助我使用php执行powershell命令的帮助!

1 个答案:

答案 0 :(得分:0)

试试这个:

$query = shell_exec('C:\\Windows\\syswow64\\WindowsPowerShell\\v1.0\\powershell.exe -command Get-Host < NUL');