Поделиться через


Выполнение удаленных команд

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

PowerShell поддерживает удаленное управление с использованием WMI, WS-Management и SSH. В PowerShell 7 и более поздних версиях RPC поддерживается только в Windows.

Дополнительные сведения об удаленном взаимодействии в PowerShell см. в следующих статьях:

Удаленное взаимодействие с Windows PowerShell без настройки

Многие командлеты Windows PowerShell имеют параметр ComputerName, который позволяет собирать данные и изменять параметры одного или нескольких удаленных компьютеров. Эти командлеты используют разные протоколы связи и работают во всех операционных системах Windows без специальной настройки.

К этим командлетам относятся:

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

Get-Command | Where-Object {
    $_.Parameters.Keys -contains "ComputerName" -and
    $_.Parameters.Keys -notcontains "Session"
}

Удаленное управление Windows PowerShell

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

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

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

Запуск интерактивного сеанса

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

Enter-PSSession Server01

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

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

Exit-PSSession

Дополнительные сведения о командлетах Enter-PSSession и Exit-PSSession см. в следующей статье:

Выполнение удаленной команды

Чтобы выполнить команду на одном или нескольких компьютерах, используйте командлет Invoke-Command. Например, чтобы запустить команду Get-UICulture на удаленных компьютерах Server01 и Server02, введите следующее:

Invoke-Command -ComputerName Server01, Server02 -ScriptBlock {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

Установка постоянного подключения

Используйте командлет New-PSSession для создания постоянного сеанса на удаленном компьютере. В следующем примере создаются удаленные сеансы на Сервере01 и 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 "NT AUTHORITY\SYSTEM"}}

Расширенное удалённое управление

PowerShell включает командлеты, которые позволяют:

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

PowerShell в Windows включает поставщика WSMan. Поставщик создает WSMan: диск, который позволяет перемещаться по иерархии параметров конфигурации на локальном компьютере и удаленных компьютерах.

Дополнительные сведения о поставщике WSMan см. в поставщика WSMan и сведения о командлетах WS-Managementили в консоли Windows PowerShell, введите Get-Help WSMan.

Дополнительные сведения можно найти здесь

Для получения информации об ошибках удаленного взаимодействия см. в about_Remote_Troubleshooting.

См. также