Выполнение сценария powershell с оснасткой Exchange через PHP
Я пытаюсь запросить сервер Exchange с помощью сценария powershell, выполняемого PHP, и, похоже, он не работает. Команда, которую я пытаюсь выполнить, такова:
powershell "Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010";"Get-CASMailbox -Identity [email protected] | fl ActiveSyncEnabled"
Если я введу это непосредственно в командную строку, она будет выполнена правильно и вернет:
Activesyncenabled: Значение True
Когда я попробую это на PHP:
$output=shell_exec('powershell "Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010";"Get-CASMailbox -Identity [email protected] | fl ActiveSyncEnabled"');
Я ничего не получаю. $вывод задан, но пуст. Если я добавлю"> output.txt "в конце я получаю пустой текстовый файл. Я в состоянии бежать другие, более простые команды powershell успешно выполняются с помощью PHP, но не эта. Служба Apache запущена от имени того же пользователя, что и при успешном выполнении сценария через командную строку.
Есть идеи?
Я бегу:
- 64-разрядная версия Windows Server 2008 R2 с пакетом обновления 1
- 32-разрядный Apache 2.2.22
- PHP 5.2.17 VC6 32-разрядный
- Консоль управления Exchange 2010
1 answers
Вы можете попробовать добавить 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
печать чего-либо еще.