Проблемы с удаленными сеансами и серверами Exchange 2007

Во всяком случае, я работаю над некоторыми сценариями Powershell для работы, и я застрял на чем-то, что, как мне казалось, будет довольно простым. По сути, есть некоторые задачи, которые мне нужно выполнить на нашем сервере Exchange, которые было бы здорово написать в сценарии. Я потратил время на написание скрипта, который подключал бы меня к нашему серверу (в том же домене) и запускал invoke-command для нескольких тестовых команд. Как только я запущу тестовые команды, я смогу приступить к написанию основной части сценария.

Однако на данный момент я застрял, просто получая get-mailbox для возврата любой информации, что на самом деле просто я пытаюсь проверить, что все работает. См. три строки тестового кода здесь:

$mainSession = New-PSSession -ComputerName TheServerName

invoke-command -session $mainSession -ScriptBlock {add-pssnapin Microsoft.Exchange.Management.Powershell.Admin}

invoke-command -session $mainSession -ScriptBlock {get-mailbox}

Я получаю исключение «psremotingtransportexception» с ошибкой «Job_Failure». Что бы это могло быть? Я знаю, что команды оснастки и get-mailbox работают, когда я на самом деле вхожу на сервер через удаленный рабочий стол и проверяю их. Предполагая, что я смогу заставить get-mailbox функционировать, я действительно смогу выполнять более сложные задачи, которые хочу поместить в сценарий. Сервер Exchange, к которому я подключаюсь, довольно старый (2007?), так что дело не в том, что я использую неправильную оснастку. Я пропустил некоторые учетные данные? Прямо сейчас он не запрашивает меня ни о чем, но я попытался добавить флаг -credential, и это тоже не помогло.

Я новичок в Powershell, поэтому любая помощь приветствуется. Вот точная ошибка, извиняюсь за дерьмовое форматирование:

Processing data for a remote command failed with the following error message: The WSMan provider     host process did not return a proper response. A provider in the host process may have behaved improperly. For more information, see the about_Remote_Troubleshooting Help topic. + CategoryInfo : OperationStopped: (System.Manageme...pressionSyncJob:PSInvokeExpressionSyncJob) [], PSRemotingTransportException + FullyQualifiedErrorId : JobFailure

Я должен упомянуть, что я уже пытался увеличить размер оболочки в МБ с помощью set-item wsman:\localhost\shell\MaxMemoryPerShellMB 1024 -force. Насколько я понимаю, это как-то связано с флагом -credential, но до сих пор мне это не удалось.




Ответы (1)


Насколько я знаю, официальная поддержка удаленного администрирования Exchange с помощью PowerShell была добавлена ​​в Exchange 2010.

Кажется, по крайней мере один человек нашел способ заставить его работать с Exchange 2007.

Извините за ответ только по ссылке, но решение кажется довольно сложным, с использованием олицетворения, специальной учетной записи пользователя, созданной для этой цели, модулей сценариев, которые необходимо установить на сервере обмена, и т. д.

Учитывая это решение, мне интересно, не могли бы вы упростить его работу, используя конечная точка PowerShell, работающая от имени администратора Exchange. Это было бы чище, чем этот бардак. По сути, вы должны создать конечную точку, установить RunAsUser, а затем использовать StartupScript для добавления оснастки. Я действительно не могу сказать, будет ли это работать, и у меня нет доступа к среде Exchange 2007, где я мог бы это проверить.

person briantist    schedule 10.09.2014
comment
Вау хорошо! Наш сервер обмена довольно старый... Я взгляну на статью о конечной точке, и это кажется правильным направлением, но я создаю эту конечную точку на сервере или на моей локальной машине? - person DT-IT-Help; 11.09.2014
comment
Кроме того, это StartupScript, куда я бы поместил остальную часть моего скрипта, как только я запустил основные тесты? - person DT-IT-Help; 11.09.2014
comment
Вероятно, нет, это действительно для более коротких вещей, которые вы хотите повлиять на каждый сеанс, который вызывается с этой конфигурацией сеанса. Таким образом, вы можете добавить туда код инициализации, загрузить модули и, в этом случае, добавить оснастку. Остальная часть вашего скрипта, скорее всего, будет выполнена в контексте этого сеанса (например, в блоке скрипта Invoke-Command). - person briantist; 11.09.2014
comment
Понял, спасибо! У меня до сих пор не было возможности попробовать конечную точку, я все еще в основном не понимаю, где создать конечную точку, на сервере или на моей локальной машине? Извините, если это очевидно... - person DT-IT-Help; 11.09.2014
comment
Конечная точка находится на сервере (точнее, это конечная точка удаленного соединения powershell). Итак, вы создаете свою конфигурацию сеанса, а затем регистрируете ее на сервере обмена. Когда вы вызываете New-PSSession, вы указываете -ConfigurationName 'MyConfiguration'. - person briantist; 11.09.2014
comment
Извините, что беспокою вас, но у меня была возможность проверить это, но кажется, что ни стандартные конфигурации, ни та, которую я создал с помощью Register-PSSession, не имеют параметра RunAsUser. Есть ли способ создать и установить его вручную? - person DT-IT-Help; 11.09.2014
comment
Вы не можете изменить параметры зарегистрированной в данный момент конечной точки; вам нужно взять конфигурацию сеанса и перерегистрировать конечную точку, чтобы изменить любой из параметров. Вы устанавливаете -RunAsCredential в командлете Register-PSSessionConfiguration. - person briantist; 11.09.2014
comment
Ну не получилось, но большое спасибо за советы! Думаю, пришло время убедить команду обновить наш сервер обмена... - person DT-IT-Help; 11.09.2014