Windows PowerShell Remoting
Удаленное взаимодействие Windows PowerShell, использующее протокол WS-Management, позволяет выполнять любую команду Windows PowerShell на одном или нескольких удаленных компьютерах. Он позволяет устанавливать постоянные соединения, запускать интерактивные сеансы 1: 1 и запускать сценарии на нескольких компьютерах. Чтобы использовать удаленное взаимодействие Windows PowerShell, удаленный компьютер должен быть настроен для удаленного управления. После настройки удаленного взаимодействия Windows PowerShell вам доступно множество стратегий удаленного взаимодействия. В оставшейся части этого документа перечислены только некоторые из них.
Начать интерактивный сеанс
Чтобы запустить интерактивный сеанс с одним удаленным компьютером, используйте командлет Enter-PSSession. Например, чтобы запустить интерактивный сеанс с удаленным компьютером Server01, введите:
Enter-PSSession Server01
В командной строке отобразится имя компьютера, к которому вы подключены. С этого момента все команды, которые вы вводите в командной строке, запускаются на удаленном компьютере и результаты отображаются на локальном компьютере.
Чтобы завершить интерактивный сеанс, введите:
Exit-PSSession
Запустите удаленную команду
Чтобы выполнить любую команду на одном или нескольких удаленных компьютерах, используйте командлет Invoke-Command. Например, чтобы запустить команду Get-UICulture на удаленных компьютерах Server01 и Server02, введите:
invoke-command -computername Server01, Server02 {get-UICulture}
Вывод возвращается на ваш компьютер.
LCID Name DisplayName PSComputerName
---- ---- ----------- --------------
1033 en-US English (United States) server01.corp.fabrikam.com
1033 en-US English (United States) server02.corp.fabrikam.com
Запустить скрипт
Чтобы запустить сценарий на одном или нескольких удаленных компьютерах, используйте параметр FilePath командлета Invoke-Command. Сценарий должен быть включен или доступен для вашего локального компьютера. Результаты будут возвращены на ваш локальный компьютер.
Например, следующая команда запускает сценарий DiskCollect.ps1 на удаленных компьютерах Server01 и Server02.
invoke-command -computername Server01, Server02 -filepath c:\Scripts\DiskCollect.ps1
Установить постоянное соединение
Чтобы выполнить ряд связанных команд, которые совместно используют данные, создайте сеанс на удаленном компьютере, а затем используйте командлет Invoke-Command для запуска команд в создаваемом сеансе. Чтобы создать удаленный сеанс, используйте командлет New-PSSession.
Например, следующая команда создает удаленный сеанс на компьютере Server01 и другой удаленный сеанс на компьютере Server02. Сохраняет объекты сеанса в переменной $ s.
$s = new-pssession -computername Server01, Server02
Теперь, когда сеансы установлены, вы можете запустить любую команду в них. А поскольку сеансы являются постоянными, вы можете собирать данные в одной команде и использовать их в следующей команде.
Например, следующая команда запускает команду Get-Hotfix в сеансах в переменной $ s и сохраняет результаты в переменной $ h. Переменная $ h создается в каждом из сеансов в $ s, но не существует в локальном сеансе.
invoke-command -session $s {$h = get-hotfix}
Теперь вы можете использовать данные в переменной $ h в последующих командах, таких как следующая. Результаты отображаются на локальном компьютере.
invoke-command -session $s {$h | where {$_.installedby -ne "NTAUTHORITY\SYSTEM"} }