2014-03-07 121 views
0

我想从我的web服务器上的php文件中运行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; 
?> 

这个工作,页面的源代码看起来完全一样,如果你已经运行DIR C你所期望的:\命令从Windows命令提示符。

我已经看了几个其他文章在这里在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 

了一下我的环境:

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

服务器是独立的(不属于域的一部分)。

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

任何帮助让我跟踪从执行PowerShell命令从PHP非常感谢!

回答

0

试试这个:

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