DataLife Engine / Сценарии в Windows PowerShell 2.0

Сценарии в Windows PowerShell 2.0



Привет друзья! Как и обещал, продолжаю рассказ о скриптовой оболочке Windows PowerShell, сегодня речь пойдёт о сценариях. 
Сценарии Windows PowerShell представляют собой обычные текстовые файлы с расширением .PS1, в которых записан код на языке PowerShell. Сценарии PowerShell можно писать поэтапно, непосредственно в самой оболочке, перенося затем готовый код во внешний текстовый файл. 
Автор статьи Ro8.

Сценарии в Windows PowerShell 2.0


У нас есть машина с предустановленной Windows 7 в редакции Максимальная 64 разрядная
Запускаем на данной машине от имени администратора PowerShell
Выполнив команду get-help get-service посмотрим информацию о командлете get-service
Как видим, данный командлет получает службы на локальном или удаленном компьютере

В данной статье мы напишем два сценария PowerShell. Первый сценарий после его выполнения отобразит список служб на компьютере пользователя
Второй сценарий после его выполнения отсортирует все службы на компьютере пользователя на запущенные и остановленные.
Для сохранения сценариев была заранее создана папка My_scripts

Сценарии будем писать используя интегрированную в Windows PowerShell среду сценариев Windows PowerShell ISE. Запускаем ее

Откроется главное окно Windows PowerShell ISE

Вводим команду get-service и выполняем ее нажав на Enter

Как видим, команда get-service успешно отработала и вывела нам список служб на данном компьютере

В правой части окна Windows PowerShell ISE пишем одну за другой две команды: clear и get-service
Команда clear выполняет очистку окна командной оболочки  PowerShell
Команда get-service выводит список служб на локальном или удаленном компьютере



Выбираем Файл-Сохранить как

Сохраним сценарий в заранее созданной папке My_scripts под именем Service. В строке Тип файла выбираем Скрипты PowerShell

Сохраненный сценарий Service.ps1

Теперь нам нужно отсортировать службы на компьютере на запущенные и остановленные
Вводим команду get-service | sort-object status и нажимаем Enter

Как видим, после выполнения команды get-service | sort-object status службы на компьютере отсортировались на остановленные и запущенные

В правой части окна Windows PowerShell ISE пишем две команды: clear и get-service | sort-object status
Команда get-service | sort-object status выводит список служб на компьютере и сортирует их на запущенные и остановленные

Выбираем Файл-Сохранить как

Сохраняем сценарий в папке My_scripts под именем Service_status



Таким образом мы имеем в папке My_scripts сценарии Service.ps1 и Service_status.ps1

Перейдем в папку My_scripts введя команду cd C:\My_scripts
После перехода в папку My_scripts для просмотра ее содержимого введем команду get-childitem
Как видим, в папке My_scripts находятся два сценария Service.ps1 и Service_status.ps1

Сценарии в Windows PowerShell запускаются следующим образом: ./Script.ps1, .\Script.ps1, где Script - имя сценария
Вводим команду ./Service.ps1 и выполняем сценарий

У нас появляется ошибка "Не удается загрузить файл C:\My_scripts\Service.ps1, так как выполнение скриптов запрещено для данной системы"
Данная ошибка возникает из-за того, что действующая политика выполнения сценариев в запущенном экземпляре PowerShell запрещает выполнение каких-либо сценариев.
Всего существует четыре политики выполнения сценариев, а именно:
Restricted - запрещено выполнение любых сценариев
AllSigned - разрешается выполнение всех сценариев с доверенной цифровой подписью (локалные и удаленные)
RemoteSigned - разрешаются все локальные, а удаленные должны обладать доверенной цифровой подписью
Unrestricted - разрешено выполнение любых сценариев
Для того, чтобы определить какая политика выполнения сценариев активирована в запущенном экземпляре PowerShell, выполним команду get-executionpolicy
Как видим, в запущенном экземпляре PowerShell активирована политика выполнения сценариев Restricted, то есть в данном случае запрещено выполнение любых сценариев
Для изменения политики выполнения сценариев нужно выполнить команду set-executionpolicy "……" где вместо кавычек с точками нужно указать одну из четырех политику выполнения сценариев
Изменим политику выполнения сценариев на RemoteSigned, введя команду set-executionpolicy RemoteSigned
После выполнения команды set-executionpolicy RemoteSigned появится сообщение о том, что изменение политики выполнения сценариев может подвергнуть компьютер риску и спрашивается
действительно ли пользователь хочет изменить политику выполнения. Вводим Y и нажимаем Enter

После изменения политики выполнения на RemoteSigned убедимся, что данная политика установлена в запущенном экземпляре PowerShell, введя команду get-executionpolicy
Как видим, политика выполнения сценариев изменилась на RemoteSigned

После изменения политики выполнения сценариев запускаем наш сценарий Service.ps1, введя ./Service.ps1

Как видим, сценарий Service.ps1 отработал и отобразил нам список служб на данном компьютере

Теперь выполним сценарий Service_status.ps1, введя ./Service_status.ps1

Как видим, сценарий Service_status.ps1 отработал. После выполнения данного сценария можно видеть как остановленные службы отображены  отдельно от запущенных
Остановленные службы

Запущенные службы

29-08-2015
Вернуться назад