Powershell Выполнение удаленных команд. Статья 1

Столкнулся с задачей выполнения однотипных действий на множестве хостов(Win 2008 R2).  Нужно было поправит файл конфигурации сервиса и перезапустить его. Решив, что лучше день потратить а потом за 5 мин долететь, принялся писать скрипт.

Вот что вышло:

Сам скрипт, который нужно выполнять от админа домена(либо так что бы хватило прав на выполнение скрипта на удалённом хосте)

RunScriptOnRemoteHost.ps1:

#
#Run command on servers list

$servers = get-content .\ServList.txt
foreach ($serv in $servers)
{

Write-host Running command on server: $serv

invoke-command -ScriptBlock {(Get-Content «C:\Program Files (x86)\freeSSHd\FreeSSHDService.ini») -replace ‘SFTPHomePath=\$HOME\\’, «SFTPHomePath=C:\Managment\» | Set-Content «c:\Program Files (x86)\freeSSHd\FreeSSHDService.ini» ; restart-service FreeSSHDService} -computer $serv

Write-host Finish
}

 

ServList.txt:

host1
host2
host3

P.S Для того, что бы  удалённых хост принялсо единение необходимо его настроить выполнив на этом хосте:

winrm quickconfig -q

или

Enable-PSRemoting
чтоб не задавал вопросов:
Enable-PSRemoting -Force

Подробней тут

Если список серверов велик тогда это затянется на долго. Есть выход, запускать параллельно  задания на всех серверах

HELP about_Remote_Jobs

Попробую и об этом напишу отдельно, когда будет ооочень много серверов у меня.

Если есть вопросы, пишите в коментах. Отвечу по мере своих знаний.

Об авторе Alex

Работаю Администратором. В основном Windows. Специализируюсь на Hyper-V, поддержке продуктивных сред и во всём помогает POSH. Малость Sharepoint. Чуть чуть работаю с железом
Запись опубликована в рубрике Powershell, Windows, Администрирование с метками , , . Добавьте в закладки постоянную ссылку.

Добавить комментарий