我正在尝试从我的网络服务器上的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命令的帮助!
答案 0 :(得分:0)
试试这个:
$query = shell_exec('C:\\Windows\\syswow64\\WindowsPowerShell\\v1.0\\powershell.exe -command Get-Host < NUL');