Столкнулся с задачей выполнения однотипных действий на множестве хостов(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
Попробую и об этом напишу отдельно, когда будет ооочень много серверов у меня.
Если есть вопросы, пишите в коментах. Отвечу по мере своих знаний.