不同,我有以下的代碼來實現:Exec在PowerShell會返回直接運行PowerShell的
$ServiceName = $_GET['Service'];
exec("echo . | powershell.exe -c get-service ".$ServiceName,$OutputArray);
echo "<pre>";
print_r($OutputArray);
echo "</pre>";
我$ServiceName
通過GET分配,但對於這個例子。
$_GET['Service'] = "WinRM"; // Service Name is assigned to WinRM For *Windows Remote Management*
現在。當我運行該腳本,我得到以下幾點:
Array
(
[0] => Get-Service : Cannot find any service with service name 'WinRM'.
[1] => At line:1 char:12
[2] => + get-service <<<< WinRM
[3] => + CategoryInfo : ObjectNotFound: (WinRM:String) [Get-Service], Se
[4] => rviceCommandException
[5] => + FullyQualifiedErrorId : NoServiceFoundForGivenName,Microsoft.PowerShell.
[6] => Commands.GetServiceCommand
[7] =>
)
現在,當我打開PowerShell中並運行以下命令:
get-service WinRM
我得到與返回以下輸出:
PS C:\Users\Administrator> get-service WinRM
Status Name DisplayName
------ ---- -----------
Running WinRM Windows Remote Management (WS-Manag...
這發生在其他一些服務名稱上,例如:
$Array = array(
"DNSServer" => "DNS",
"DHCP Client" => "DHCP",
"Web Server" => "IISADMIN",
"Windows Remote Management" => "WinRM"
);
這在失敗中DNS, IISADMIN, WinRM
這個例子......但同樣,從PS我得到與返回:
PS C:\Users\Administrator> get-service DNS,IISADMIN,WinRM
Status Name DisplayName
------ ---- -----------
Running DNS DNS Server
Running IISADMIN IIS Admin Service
Running WinRM Windows Remote Management (WS-Manag...
我的總的問題是如何提高從PowerShell中的報告,以PHP和得到準確兩端的結果?
這取決於服務名稱取決於某些時間。例如: -
$ServiceName = "DHCP";
這就是爲什麼在錯誤調試不包含此名稱。我得到與返回:
Array
(
[0] =>
[1] => Status Name DisplayName
[2] => ------ ---- -----------
[3] => Running DHCP DHCP Client
[4] =>
[5] =>
)
這正是我所期待的。
對不起,我會在一分鐘內檢查一下,看看它是否有效 – 2013-05-01 15:46:41
運行第一個塊後,它返回空白,第二個也是如此。如果我運行'win32_service'庫在PHP中,我得到錯誤5這是一個權限問題,我不必解決 – 2013-05-01 22:23:10
對不起,不知道爲什麼這不適合你。這兩種方法都能在我的win7機器上正常工作。 – Gordon 2013-05-02 09:06:36