2

PHP によって実行される powershell スクリプトを使用して Exchange サーバーにクエリを実行しようとしていますが、機能していないようです。私が実行しようとしているコマンドは次のとおりです。

powershell "Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010";"Get-CASMailbox -Identity user@example.com | fl ActiveSyncEnabled"

コマンドプロンプトに直接入力すると、正しく実行されて次のように返されます。

ActiveSyncEnabled : 真

PHPで試してみると:

$output=shell_exec('powershell "Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010";"Get-CASMailbox -Identity user@example.org | fl ActiveSyncEnabled"');

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

何か案は?

私は走っています:

  • Windows Server 2008 R2 SP1 64 ビット
  • アパッチ 2.2.22 32 ビット
  • PHP 5.2.17 VC6 32 ビット
  • Exchange 管理コンソール 2010
4

1 に答える 1

2

2>&1コマンドの最後に次のように追加してみてください。

$output=shell_exec('powershell "Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010";"Get-CASMailbox -Identity user@example.org | fl ActiveSyncEnabled" 2>&1');

場合によっては、PowerShell の出力の先頭にある改行により、他の出力が妨げられているように見えることshell_execがあります。

于 2012-04-13T15:16:15.847 に答える