我正在尝试使用PHP执行的powershell脚本查询Exchange服务器,但它似乎不起作用。我试图运行的命令是:
powershell "Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010";"Get-CASMailbox -Identity user@example.com | fl ActiveSyncEnabled"
如果我直接在命令提示符中键入它,它会正确执行并返回:
ActiveSyncEnabled:True
当我在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服务作为与通过命令提示符成功执行脚本时相同的用户运行。
有什么想法吗?
我正在跑步:
答案 0 :(得分:1)
您可以尝试在命令末尾添加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
打印其他内容。