Удаленное выполнение сценариев в Windows PowerShell 2.0

Удаленное выполнение сценариев в Windows PowerShell 2.0

Удаленное выполнение сценариев в Windows PowerShell 2.0

Категория: Разное
Добавил:
access_timeОпубликовано: 26-09-2015
visibilityПросмотров: 13 289
chat_bubble_outlineКомментариев: 0

 
Автор Ro8 
Привет всем! В данной статье рассмотрим такой вопрос, как удаленное выполнение сценариев используя Windows PowerShell 2.0
У нас есть две машины, одна с предустановленной Windows Server 2008 R2 Enterprise (в режиме Server Core), другая с Windows 7 (x64) Ultimate

d183d0b4d0b0d0bbd0b5d0bdd0bdd0bed0b5 d0b2d18bd0bfd0bed0bbd0bdd0b5d0bdd0b8d0b5 d181d186d0b5d0bdd0b0d180d0b8d0b5d0b2 d0b2 windows powershell 2 0 65df96bef32b7

Перейдем на машину с Windows Server 2008 R2 и запустим на ней Windows PowerShell выполнив команду powershell 

d183d0b4d0b0d0bbd0b5d0bdd0bdd0bed0b5 d0b2d18bd0bfd0bed0bbd0bdd0b5d0bdd0b8d0b5 d181d186d0b5d0bdd0b0d180d0b8d0b5d0b2 d0b2 windows powershell 2 0 65df96bf184df

Посмотрим состояние службы WinRM, выполнив команду get-service winrm. Как видим, данная служба выполняется

d183d0b4d0b0d0bbd0b5d0bdd0bdd0bed0b5 d0b2d18bd0bfd0bed0bbd0bdd0b5d0bdd0b8d0b5 d181d186d0b5d0bdd0b0d180d0b8d0b5d0b2 d0b2 windows powershell 2 0 65df96bf36c73

Перейдем на машину с Windows 7. На данной машине на диске C создана папка Scripts

d183d0b4d0b0d0bbd0b5d0bdd0bdd0bed0b5 d0b2d18bd0bfd0bed0bbd0bdd0b5d0bdd0b8d0b5 d181d186d0b5d0bdd0b0d180d0b8d0b5d0b2 d0b2 windows powershell 2 0 65df96bf5b058

В папке Scripts был заранее подготовлен сценарий Service_status.ps1 

d183d0b4d0b0d0bbd0b5d0bdd0bdd0bed0b5 d0b2d18bd0bfd0bed0bbd0bdd0b5d0bdd0b8d0b5 d181d186d0b5d0bdd0b0d180d0b8d0b5d0b2 d0b2 windows powershell 2 0 65df96bf7f8f6

Если открыть файл Service_status.ps1 (например в блокноте), то можно увидеть, что в нем прописаны две команды:
clear — очистка экрана PowerShell
get-service s* | sort-object status — получить список служб, которые начинаются на букву S и отсортировать их по параметру Status 

d183d0b4d0b0d0bbd0b5d0bdd0bdd0bed0b5 d0b2d18bd0bfd0bed0bbd0bdd0b5d0bdd0b8d0b5 d181d186d0b5d0bdd0b0d180d0b8d0b5d0b2 d0b2 windows powershell 2 0 65df96bfa4b8c

Запускаем на машине с Windows 7  PowerShell
Первым делом нам нужно определить политику выполнения сценариев на удаленной машине с Windows Server 2008 R2
Для этого выполним команду invoke-command -computername Server01 -credential exityrwed/Administrator -ScriptBlock {get-executionpolicy}, где Server01 — это имя удаленной машины (в нашем случае это машина с Windows Server 2008 R2), exityrwed — домен, членом которого является машина с Windows Server 2008 R2
Administrator — пользователь, от имени которого будет производится подключение к удаленной машине
{get-executionpolicy} — в данных скобках прописываем команду, которую нужно выполнить на удаленной машине. Так как нам нужно определить политику выполнения сценариев PowerShell, в скобках пишем команду get-executionpolicy

d183d0b4d0b0d0bbd0b5d0bdd0bdd0bed0b5 d0b2d18bd0bfd0bed0bbd0bdd0b5d0bdd0b8d0b5 d181d186d0b5d0bdd0b0d180d0b8d0b5d0b2 d0b2 windows powershell 2 0 65df96bfbb056

Вводим пароль пользователя для подключения к удаленной машине

d183d0b4d0b0d0bbd0b5d0bdd0bdd0bed0b5 d0b2d18bd0bfd0bed0bbd0bdd0b5d0bdd0b8d0b5 d181d186d0b5d0bdd0b0d180d0b8d0b5d0b2 d0b2 windows powershell 2 0 65df96bfdaa6c

После выполнения команды invoke-command -computername Server01 -credential exityrwed/Administrator -ScriptBlock {get-executionpolicy} видим, что политика выполнения сценариев на машине с Windows Server 2008 R2 имеет статус Unrestricted, то есть разрешено выполнение любых сценариев
d183d0b4d0b0d0bbd0b5d0bdd0bdd0bed0b5 d0b2d18bd0bfd0bed0bbd0bdd0b5d0bdd0b8d0b5 d181d186d0b5d0bdd0b0d180d0b8d0b5d0b2 d0b2 windows powershell 2 0 65df96c009dba
Выполним сценарий Service_status.ps1 на удаленной машине с Windows Server 2008 R2, введя команду invoke-command -filepath C:ScriptsService_status.ps1 -computername Server01, где C:ScriptsService_status.ps1 — это путь к файлу сценария Service_status.ps1
Server01— имя удаленной машины, на которой выполняется сценарий

d183d0b4d0b0d0bbd0b5d0bdd0bdd0bed0b5 d0b2d18bd0bfd0bed0bbd0bdd0b5d0bdd0b8d0b5 d181d186d0b5d0bdd0b0d180d0b8d0b5d0b2 d0b2 windows powershell 2 0 65df96c028b48

Как видим, сценарий Service_status.ps1 успешно отработал на машине с именем Server01 и отобразил нам список служб начинающихся на букву S

d183d0b4d0b0d0bbd0b5d0bdd0bdd0bed0b5 d0b2d18bd0bfd0bed0bbd0bdd0b5d0bdd0b8d0b5 d181d186d0b5d0bdd0b0d180d0b8d0b5d0b2 d0b2 windows powershell 2 0 65df96c050734

Напишем еще один сценарий, состоящий из одной команды, а именно stop-service sppsvc
Данной командой мы остановим выполняющуюся службу sppsvc на удаленной машине Server01 

d183d0b4d0b0d0bbd0b5d0bdd0bdd0bed0b5 d0b2d18bd0bfd0bed0bbd0bdd0b5d0bdd0b8d0b5 d181d186d0b5d0bdd0b0d180d0b8d0b5d0b2 d0b2 windows powershell 2 0 65df96c077481

Выбираем File-Save As

d183d0b4d0b0d0bbd0b5d0bdd0bdd0bed0b5 d0b2d18bd0bfd0bed0bbd0bdd0b5d0bdd0b8d0b5 d181d186d0b5d0bdd0b0d180d0b8d0b5d0b2 d0b2 windows powershell 2 0 65df96c09ae92

Сценарий сохраним в папке Scripts на диске С: под именем Stop_service_sppsvc 

d183d0b4d0b0d0bbd0b5d0bdd0bdd0bed0b5 d0b2d18bd0bfd0bed0bbd0bdd0b5d0bdd0b8d0b5 d181d186d0b5d0bdd0b0d180d0b8d0b5d0b2 d0b2 windows powershell 2 0 65df96c0beaa4

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

d183d0b4d0b0d0bbd0b5d0bdd0bdd0bed0b5 d0b2d18bd0bfd0bed0bbd0bdd0b5d0bdd0b8d0b5 d181d186d0b5d0bdd0b0d180d0b8d0b5d0b2 d0b2 windows powershell 2 0 65df96c0ebd44

Выполним созданный сценарий Stop_service_sppsvc.ps1 на удаленной машине Server01
Для этого вводим команду invoke-command -filepath C:ScriptsStop_service_sppsvc.ps1 -computerName Server01и выполняем её

d183d0b4d0b0d0bbd0b5d0bdd0bdd0bed0b5 d0b2d18bd0bfd0bed0bbd0bdd0b5d0bdd0b8d0b5 d181d186d0b5d0bdd0b0d180d0b8d0b5d0b2 d0b2 windows powershell 2 0 65df96c11eed9

Сценарий Stop_service_sppsvc.ps1 выполнен успешно, так как никаких ошибок PowerShell нам не выдал

d183d0b4d0b0d0bbd0b5d0bdd0bdd0bed0b5 d0b2d18bd0bfd0bed0bbd0bdd0b5d0bdd0b8d0b5 d181d186d0b5d0bdd0b0d180d0b8d0b5d0b2 d0b2 windows powershell 2 0 65df96c13f8df

После выполнения сценария Stop_service_sppsvc.ps1 служба sppsvc на удаленной машине Server01 должна быть остановлена.
Проверим состояние службы sppsvc на удаленной машине Server01 выполнив сценарий Service_status.ps1
Выполняем команду invoke-command -filepath C:ScriptsService_status.ps1 -computername Server01

d183d0b4d0b0d0bbd0b5d0bdd0bdd0bed0b5 d0b2d18bd0bfd0bed0bbd0bdd0b5d0bdd0b8d0b5 d181d186d0b5d0bdd0b0d180d0b8d0b5d0b2 d0b2 windows powershell 2 0 65df96c15ed7b

Как видим, служба sppsvc на машине с именем Server01 остановлена

d183d0b4d0b0d0bbd0b5d0bdd0bdd0bed0b5 d0b2d18bd0bfd0bed0bbd0bdd0b5d0bdd0b8d0b5 d181d186d0b5d0bdd0b0d180d0b8d0b5d0b2 d0b2 windows powershell 2 0 65df96c17fc19

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

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

Разное
Удаленное выполнение сценариев в Windows PowerShell 2.0