2015-07-01 77 views
1

請幫幫我,訪問的PowerShell

我有問題,如何使用PHP的PowerShell管理上office365 Microsoft.Exchange我的通訊組:

1。首先我使用EXEC( )在PHP的命令。它工作得很好,但是如何讓PowerShell在後臺打開並且能夠使用相同的PPSession再次訪問它(以避免從Miscosoft.Exchange再次重新登錄和Import-PSSession),存在問題。這是我的php代碼

$output = array(); 
$return_code = 0; 
$last_line = exec('powershell.exe C:\xampp\htdocs\powershell\powerscript.ps1 ', $output, $return_code); 

echo "<pre>"; 
print_r($output); 
echo "</pre>"; 

2.我嘗試在php中使用proc_open()。我正在處理cmd.exe,但它不適用於powershell.exe。這是我的示例代碼

$descriptorspec = array(
    0 => array("pipe", "r"), // stdin is a pipe that the child will read from 
    1 => array("pipe", "w"), // stdout is a pipe that the child will write to 
    2 => array("file", "error.txt", "a") // stderr is a file to write to 
);  

// if cmd.exe it's working 
$process = proc_open('powershell.exe', $descriptorspec, $pipes); 

if (is_resource($process)) { 
    fwrite($pipes[0], 'write-host test' . PHP_EOL); 
    fclose($pipes[0]); 

echo('<pre>'); 
print_r(stream_get_contents($pipes[1])); 
echo('<pre>'); 

fclose($pipes[1]); 
proc_close($process); 
} 

如果任何人有關於如何在PHP中使用PowerShell的經驗,請與我分享。

最佳方面 製造伊迪

回答

0

這裏是一個項目,允許PHP獲取和動態與真正的Powershell的交互。在這裏獲得:https://github.com/merlinthemagic/MTS

下載您只需使用下面的代碼後:

$shellObj = \MTS\Factories::getDevices()->getLocalHost()->getShell('powershell'); 

$strCmd1 = 'command one from script'; 
$return1 = $shellObj->exeCmd($strCmd1); 

$strCmd2 = 'command two from script'; 
$return2 = $shellObj->exeCmd($strCmd2); 

//etc, etc 

而是觸發一個腳本,你可以只單獨觸發每個命令和處理的回報。您可以針對$ shellObj發出任何您喜歡的命令,該環境在PHP腳本的整個生命週期中都保持不變。