В последнее время я пишу довольно много PowerShell скриптов, и хотя все мои тестовые сервера имеют правильные настройки удаленного доступа к PowerShell я очень часто встречаю на форумах вопросы о том, что скрипты не работают или люди просто забывают включить удаленное выполнение скриптов на серверах. Как вы возможно знаете, данную настройку можно выполнить через групповую политику на уровне домена или нужно подразделения, но это тема для другой статьи и мы не будем сейчас рассматривать данный момент.
По этой причине я решил сделать небольшой рабочий процесс (workflow) в Opalis, который будет проверять возможность выполнения скрипта на нужном компьютере. Вы можете использовать данный процесс в любом другом с помощью объекта "Trigger Policy" либо просто скопировать и вставить процесс в ваш собственный.
Он реально очень просто. Все что вам нужно сделать сделает команда "Invoke-Command", указажите нужный компьютер и команду "Get-ExecutionPolicy". Затем вы можете парсить результат так как вам нужно. Данный процесс содержит 3 объекта: Custom Start, Run .NET Script и Publish Policy Data.
В объекте Сustom Start мы принимаем входной параметр "Computer Name", который затем используется в скрипте. Сам скрипт очень простой:
Если скрипт выполняется успешно, он возвращает значение executionpolicy, которое может быть следующим:
- Restricted
- AllSigned
- RemoteSigned
- Unrestricted
- Bypass
- Undefined
Подробнее о том что означает каждое из этих значений можно прочитать на TechNet.
Скрипт также отлавливает ошибки, которые могут появится в результате проблем с брандмауэром. К примеру, скрипт получит следующую ошибку и вернут результат "failed":
С помощью данного рабочего процесса мы можете быть уверены что все ваши компьютеры смогут корректно обработать запросы на выполнение удаленных PowerShell скриптов.
Полезная информация
Теперь отличный шунгит купить можно купить по всей России. Напрямую с месторождения и высочайшего качества. Рекомендую.