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

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

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

Категория: Windows / Функционал Windows
Добавил:
access_timeОпубликовано: 29-08-2015
visibilityПросмотров: 18 161
chat_bubble_outlineКомментариев: 2

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

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

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

d181d186d0b5d0bdd0b0d180d0b8d0b8 d0b2 windows powershell 2 0 65df97cac1eff

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

d181d186d0b5d0bdd0b0d180d0b8d0b8 d0b2 windows powershell 2 0 65df97cae339c

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

d181d186d0b5d0bdd0b0d180d0b8d0b8 d0b2 windows powershell 2 0 65df97cb0fa15

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

d181d186d0b5d0bdd0b0d180d0b8d0b8 d0b2 windows powershell 2 0 65df97cb2d6d7

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

d181d186d0b5d0bdd0b0d180d0b8d0b8 d0b2 windows powershell 2 0 65df97cb4e55d

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

d181d186d0b5d0bdd0b0d180d0b8d0b8 d0b2 windows powershell 2 0 65df97cb71b40

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

d181d186d0b5d0bdd0b0d180d0b8d0b8 d0b2 windows powershell 2 0 65df97cb9b3aa

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

d181d186d0b5d0bdd0b0d180d0b8d0b8 d0b2 windows powershell 2 0 65df97cbc189b

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

d181d186d0b5d0bdd0b0d180d0b8d0b8 d0b2 windows powershell 2 0 65df97cbe67b8

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

d181d186d0b5d0bdd0b0d180d0b8d0b8 d0b2 windows powershell 2 0 65df97cc1a4f1

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

d181d186d0b5d0bdd0b0d180d0b8d0b8 d0b2 windows powershell 2 0 65df97cc3d36d

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

d181d186d0b5d0bdd0b0d180d0b8d0b8 d0b2 windows powershell 2 0 65df97cc5df99

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

d181d186d0b5d0bdd0b0d180d0b8d0b8 d0b2 windows powershell 2 0 65df97cc8404a

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

d181d186d0b5d0bdd0b0d180d0b8d0b8 d0b2 windows powershell 2 0 65df97ccab9d6

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

d181d186d0b5d0bdd0b0d180d0b8d0b8 d0b2 windows powershell 2 0 65df97ccce5fc

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

d181d186d0b5d0bdd0b0d180d0b8d0b8 d0b2 windows powershell 2 0 65df97cd017a9

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

d181d186d0b5d0bdd0b0d180d0b8d0b8 d0b2 windows powershell 2 0 65df97cd23b21

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

d181d186d0b5d0bdd0b0d180d0b8d0b8 d0b2 windows powershell 2 0 65df97cd4349e

У нас появляется ошибка «Не удается загрузить файл C:My_scriptsService.ps1, так как выполнение скриптов запрещено для данной системы»
Данная ошибка возникает из-за того, что действующая политика выполнения сценариев в запущенном экземпляре PowerShell запрещает выполнение каких-либо сценариев.
Всего существует четыре политики выполнения сценариев, а именно:
Restricted — запрещено выполнение любых сценариев
AllSigned — разрешается выполнение всех сценариев с доверенной цифровой подписью (локалные и удаленные)
RemoteSigned — разрешаются все локальные, а удаленные должны обладать доверенной цифровой подписью
Unrestricted — разрешено выполнение любых сценариев
d181d186d0b5d0bdd0b0d180d0b8d0b8 d0b2 windows powershell 2 0 65df97cd63c9a
Для того, чтобы определить какая политика выполнения сценариев активирована в запущенном экземпляре PowerShell, выполним команду get-executionpolicy
Как видим, в запущенном экземпляре PowerShell активирована политика выполнения сценариев Restricted, то есть в данном случае запрещено выполнение любых сценариев
Для изменения политики выполнения сценариев нужно выполнить команду set-executionpolicy «……» где вместо кавычек с точками нужно указать одну из четырех политику выполнения сценариев
Изменим политику выполнения сценариев на RemoteSigned, введя команду set-executionpolicy RemoteSigned
После выполнения команды set-executionpolicy RemoteSigned появится сообщение о том, что изменение политики выполнения сценариев может подвергнуть компьютер риску и спрашивается
действительно ли пользователь хочет изменить политику выполнения. Вводим Y и нажимаем Enter

d181d186d0b5d0bdd0b0d180d0b8d0b8 d0b2 windows powershell 2 0 65df97cd88d33

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

d181d186d0b5d0bdd0b0d180d0b8d0b8 d0b2 windows powershell 2 0 65df97cdafe63

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

d181d186d0b5d0bdd0b0d180d0b8d0b8 d0b2 windows powershell 2 0 65df97cdd686c

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

d181d186d0b5d0bdd0b0d180d0b8d0b8 d0b2 windows powershell 2 0 65df97cdefffc

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

d181d186d0b5d0bdd0b0d180d0b8d0b8 d0b2 windows powershell 2 0 65df97ce26218

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

d181d186d0b5d0bdd0b0d180d0b8d0b8 d0b2 windows powershell 2 0 65df97ce42626

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

d181d186d0b5d0bdd0b0d180d0b8d0b8 d0b2 windows powershell 2 0 65df97ce672f4

tagsКлючевые слова
     Рекомендуем другие статьи по данной теме
Ctrl
Enter
Заметили ошибку

Выделите и нажмите Ctrl+Enter

Windows, Функционал Windows
Сценарии в Windows PowerShell 2.0