2012-04-13 32 views
2

PHPで実行されたpowershellスクリプトを使用してExchangeサーバーを照会しようとしていますが、動作していないようです。私が実行しようとしてるのコマンドは次のとおりです。PHP経由でExchangeスナップインでpowershellスクリプトを実行

ActiveSyncEnabled : True

私はPHPでそれをしようとすると::

powershell "Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010";"Get-CASMailbox -Identity [email protected] | fl ActiveSyncEnabled" 

私が直接コマンドプロンプトに、それが正しく実行されることとリターンが入力した場合

$output=shell_exec('powershell "Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010";"Get-CASMailbox -Identity [email protected] | fl ActiveSyncEnabled"'); 

私は何も得られません。 $出力は設定されていますがブランクです。 "> output.txt"を最後に追加すると、空白のテキストファイルが表示されます。私は他の、より簡単なpowershellコマンドをPHP経由で正常に実行できますが、これはできません。 Apacheサービスは、コマンドプロンプトでスクリプトを正常に実行したときと同じユーザーとして実行されています。

アイデア?

私が実行している:

  • のWindows Server 2008 R2 SP1 64ビット
  • のApache 2.2.22 32ビット
  • PHP 5.2.17 VC6 32ビット
  • Exchange管理コンソール2010
+0

テスト目的のために、Apacheサービスを自分自身として実行するように設定しました。 PHPでは、exec( 'whoami')は、コマンドプロンプトでコマンドを正常に実行したときに使用したのと同じユーザー名であるdomain \ usernameを返します。このアカウントにアクセス許可の問題がないか、何か不足していますか? – amay83

答えて

1

あなたは例えば、コマンドの最後に2>&1を追加してみてください可能性があります

$output=shell_exec('powershell "Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010";"Get-CASMailbox -Identity [email protected] | fl ActiveSyncEnabled" 2>&1'); 

時々、powershellの出力の始めに改行があると、shell_execは何も印刷されないことがあります。

+0

ありがとうございます!それでも動作しませんが、少なくとも今はエラーが発生しています。Add-PSSnapin:Windows PowerShellバージョン2にスナップインは登録されていません。行:1 char:13 + Add-PSSnapin <<< amay83

+0

エラー? – Gary

+0

私は以前のコメントを編集しました。私はまた、コマンドプロンプトにShedalの文字列を直接入力しようとしましたが、正しく実行され、 'AciveSyncEnabled:True'を返します。 – amay83

関連する問題