Одну команду Windows PowerShell можно выполнять как на одном компьютере, так и на нескольких сотнях. Windows PowerShell поддерживает разнообразные технологии удаленного управления компьютерами, в том числе WMI, RPC и WS-Management.

Удаленная работа без настройки

У многих командлетов Windows PowerShell имеется параметр ComputerName, позволяющий собирать данные и менять настройки на одном или нескольких удаленных компьютерах. Они используют различные технологии связи, и большинство из них поддерживает те же операционные системы Windows, что и Windows PowerShell, без специальной настройки.

К этим командлетам относятся следующие.

Обычно командлеты, поддерживающие удаленную работу без специальной настройки, имеют параметр ComputerName и не имеют параметра Session. Чтобы найти эти командлеты в текущем сеансе, введите команду:

get-command | where { $_.parameters.keys -contains "ComputerName" -and $_.parameters.keys -notcontains "Session"}

Удаленная работа в Windows PowerShell

Средства удаленной работы Windows PowerShell, построенные на базе протокола WS-Management, позволяют выполнять любые команды Windows PowerShell на одном или нескольких удаленных компьютерах. Они позволяют устанавливать постоянные подключения, запускать интерактивные сеансы 1:1 и запускать скрипты на нескольких компьютерах.

Для использования средств удаленной работы Windows PowerShell удаленный компьютер должен быть настроен для удаленного управления. Дополнительную информацию и инструкции см. в разделе about_Remote_Requirements.

После настройки удаленной работы Windows PowerShell можно использовать разнообразные стратегии удаленного взаимодействия. В оставшейся части этого документа перечислено несколько таких стратегий. Дополнительные сведения см. в разделах about_Remote и about_Remote_FAQ.

Создание интерактивного сеанса

Чтобы начать интерактивный сеанс с одним удаленным компьютером, используйте командлет Enter-PSSession. Например, чтобы начать интерактивный сеанс с удаленным компьютером Server01, введите следующую команду:

enter-pssession Server01

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

Чтобы завершить интерактивный сеанс, введите следующую команду:

exit-pssession

Дополнительные сведения о командлетах Enter-PSSession и Exit-PSSession см. в разделах Enter-PSSession и 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

Дополнительные сведения о командлете Invoke-Command см. в разделе Invoke-Command.

Запуск скрипта

Чтобы запустить скрипт на одном или нескольких удаленных компьютерах, используйте параметр FilePath командлета Invoke-Command. Скрипт должен находиться на локальном компьютере или быть для него доступным. Результаты выполнения скрипта возвращаются на локальный компьютер.

Например, следующая команда выполняет скрипт DiskCollect.ps1 на удаленных компьютерах Server01 и Server02:

invoke-command -computername Server01, Server02 -filepath c:\Scripts\DiskCollect.ps1

Дополнительные сведения о командлете Invoke-Command см. в разделе Invoke-Command.

Создание постоянного подключения

Чтобы выполнить последовательность команд, совместно использующих данные, нужно создать сеанс на удаленном компьютере и использовать командлет 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"

Расширенные возможности удаленного доступа

Выше были описаны только первые шаги в работе со средствами удаленного управления Windows PowerShell. С помощью командлетов Windows PowerShell можно создавать и настраивать сеансы удаленного доступа на локальных и удаленных компьютерах, создавать специальные и ограниченные сеансы, предоставлять пользователям возможность импортировать команды из удаленных сеансов, косвенно выполняемые в удаленных сеансах, настраивать защиту удаленных сеансов и т. д.

Для упрощения удаленной настройки в состав Windows PowerShell входит поставщик WS-Management. Диск WSMAN:, создаваемый поставщиком, служит для навигации по иерархии настроек конфигурации на локальном компьютере и на удаленных компьютерах. Дополнительную информацию о поставщике WS-Management можно найти в разделах WSMan Provider и about_WS-Management_Cmdlets или получить, набрав команду "get-help wsman" в консоли Windows PowerShell.

Дополнительные сведения см. в разделах about_Remote_FAQ, New-PSSessionConfiguration и Import-PSSession. Справочные сведения об устранении неполадок удаленного взаимодействия см. в разделе about_Remote_Troubleshooting.

См. также