Как запустить скрипт PowerShell на удаленном компьютере👨⚕️ |

Как запустить скрипт PowerShell на удаленном компьютере👨⚕️

Мануал

Функциональность удаленного выполнения команд в PowerShell называется PowerShell Remoting (появилась в PowerShell 2.0) и основана на возможностях протокола Web Services for Management (WS-Management). С PowerShell Remoting вы можете запускать команды на одном или нескольких удаленных компьютерах. Вы можете использовать интерактивный режим сеанса с удаленными компьютерами, временным или постоянным соединением. В этой статье мы рассмотрим несколько примеров использования PowerShell для запуска сценария на удаленном компьютере.

Для удаленного подключения к компьютеру через PowerShell на нем должна быть включена и настроена WinRM (служба удаленного управления Windows) (по умолчанию она отключена). Связь между компьютерами осуществляется по протоколам HTTP или HTTPS, а весь сетевой трафик между компьютерами зашифрован. Вы можете использовать NTLM и Kerberos для аутентификации на удаленном компьютере.

Чтобы проверить состояние службы WinRM, выполните следующую команду:

get-service winrm

Как видите, служба WS-Management работает.

Чтобы интерактивно подключиться к удаленному компьютеру Server1 через PowerShell, выполните следующую команду:

Enter-PSSession Server1

Представление CLI PoSh изменится.

В начале строки будет указано имя удаленного компьютера, к которому вы подключены через WinRM.

После того как сеанс установлен, все команды, которые вводятся в консоли PowerShell, выполняются на удаленном компьютере.

PS Remoting работает следующим образом: команды, введенные на локальном компьютере, передаются на удаленный компьютер и выполняются там, затем результат передается обратно.

Поскольку все команды выполняются локально, нет необходимости беспокоиться о совместимости с версией и модулями PoSh.

Для завершения интерактивного сеанса выполните команду:

Exit-PSSession

Только простые задачи удаленного управления обычно выполняются на компьютерах в интерактивном режиме.

Чтобы выполнить сложную команду или запустить скрипт PowerShell удаленно, используйте командлет Invoke-Command.

Следующая команда создаст удаленное соединение с компьютером Server1 и запустит блок команд, указанный в параметре ScriptBlock. После этого удаленный сеанс автоматически закроется.

Invoke-Command -ScriptBlock {Restart-Service spooler} -ComputerName server1

Вы можете запустить задачу в фоновом режиме, запустив Invoke-Command с параметром -AsJob. Но в этом случае команда не вернет результат в консоль PoSh. Чтобы получить информацию о фоновом задании, используйте командлет Receive-Job.

PowerShell позволяет запускать локальные скрипты PS1 на удаленных компьютерах.

Идея заключается в том, что вы храните все инструкции PowerShell в локальном файле .PS1 на вашем компьютере.

Для этого используйте параметр -FilePath в командлете Invoke-Command вместо -ScriptBlock. Например, чтобы запустить скрипт  c:\ps\tune.ps1 на трех удаленных серверах, вы можете использовать следующую команду:

Invoke-Command -FilePath c:\ps\tune.ps1 -ComputerName server1,server2,server3

Основным преимуществом этого способа запуска скриптов PowerShell является то, что вам не нужно копировать файл скрипта на удаленные компьютеры.

Вы можете использовать не только локальный скрипт, но также скрипт PS в общей сетевой папке, доступ к которой можно получить с локального компьютера.

Вы можете сохранить список компьютеров в текстовом файле и удаленно выполнить скрипт PS на всех компьютерах:

Invoke-command -comp (get-content c:\ps\servers.txt) -filepath c:\ps\tune.ps1

По умолчанию он отправляет скрипт PS1 одновременно 32 удаленным компьютерам из списка.

Если имеется более 32 компьютеров, то PoSh отслеживает состояние выполнения скриптов на первых 32 компьютерах, а если скрипт завершен, команда выполняется на следующем компьютере.

С параметром ThrottleLimit вы можете увеличить этот предел, но будьте осторожны, чтобы не перегружать вашу сеть.

 

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий