【发布时间】:2012-04-13 15:02:26
【问题描述】:
我正在尝试使用 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
【问题讨论】:
-
出于测试目的,我将 Apache 服务设置为以我自己的身份运行。在 PHP 中,exec('whoami') 返回我的域\用户名,与我在命令提示符下成功执行命令时使用的用户名相同。这不应该说明任何权限问题,还是我遗漏了什么?
标签: php apache powershell windows-server-2008 exchange-server