2014-03-07 257 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');