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 位
  • Apache 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 回答