Выполнение сценария 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
Author: amay83, 2012-04-13

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 печать чего-либо еще.

 1
Author: Dmytro Shevchenko, 2012-04-13 15:16:15