Удаленное Взаимодействие Windows PowerShell
удаленное взаимодействие 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"} }