Orchestrator не будет запускать задачу PowerShell Cloud Exchange
У меня проблема с получением скрипта PowerShell, который запрашивает объекты в облачном ресурсе Exchange для работы в Runbook Orchestrator.
Сценарий PowerShell (который работает правильно из командной строки моего настольного компьютера и при переходе по нему в ISE) устанавливает сеанс удаленного управления в облаке и выглядит следующим образом:
try
{
$user = "username@domain.com"
$pword = convert-toSecureString -string "password" -asplaintext -force
$creds = new-object -typename system.management.automation.pscredential -argumentlist $user, $pword
$o365 = new-pssession -configurationname Microsoft.Exchange -connectionuri https://ps.outlook.com -credential $creds -authentication basic - allowredirection
import-pssession $o365 -allowclobber -prefix o365
get-o365Mailbox 'Doe, John'
}
catch
{
throw $_.exception
}
Как я уже упоминал, он работает нормально, когда я выполняю его в редакторе на своем рабочем столе, но при выполнении внутри Runbook Orchestrator происходит сбой по команде import-pssession (так как $o365 никогда не устанавливается).
Я взял сценарий PowerShell и запустил его вручную на реальном сервере Runbook, и он работает там же, как и на моем собственном рабочем столе - только при запуске внутри Runbook Orchestrator он не будет работать. У меня всего несколько недель опыта работы с Orchestrator, и я не знал, что столкнусь с такой проблемой, как эта, - я пытаюсь запустить сценарий в упражнении "Запуск.Net Script" с языком, установленным на "Powershell". "Я считаю, что это рекомендуемый метод. Я попытался сохранить сценарий в виде файла на сервере Runbook, а затем использовал действие "Запустить программу" для запуска Powershell с этим файлом (рекомендованным кем-то во время моего поиска), и это тоже не работает.
Любая помощь будет оценена. Благодарю.
2 ответа
Является ли учетная запись службы Orchestrator, на которой выполняется сценарий, членом групп ролей Exchange RBAC? Если нет, ему не будет разрешено подключаться к этим сеансам управления Exchange.
Orchestrator по-прежнему x86, а команды в вашем скрипте будут работать только в x64. Проверьте это в своем x86 ISE и увидите ту же ошибку. Мой обходной путь - вызвать скрипт, используя действие "Запуск программы" в списке действий системы.
Выполнение программы Компьютер = я всегда начинаю с действия по инициализации, а затем подписываюсь на компьютер здесь. Путь к программе: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe Параметры: полный путь к.ps1 вашего сценария Рабочая папка: C: \ Temp
Проблема оказалась связана с настройками брандмауэра и прокси клиента для учетной записи службы, которую они настроили для использования Orchestrator. Они (клиенты) не будут предоставлять служебной учетной записи доступ в Интернет в соответствии с политикой.
Было предложено несколько разных решений: одно устанавливало пакет интеграции PowerShell из CodePlex и использовало его - действие CodePlex PowerShell позволило мне явно установить контекст безопасности действия, что позволило мне обойти проблему с брандмауэром, запустив действие под учетной записью, которая имела доступ в Интернет.
Второе решение - установка пакета интеграции с Exchange Admin и настройка соединения с облачным хостом. Использование действия "Выполнить команду Exchange PowerShell" вместо более общего действия "Запуск сценария.NET" также позволило коду работать должным образом.