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


about_Remote

Краткое описание

Описывает выполнение удаленных команд в PowerShell.

Подробное описание

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

Примечание

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

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

Самый простой способ выполнить удаленные команды — запустить интерактивный сеанс с удаленным компьютером.

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

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

Enter-PSSession Server01

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

Server01\PS>

Теперь можно вводить команды на компьютере Server01.

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

Exit-PSSession

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

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

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

Чтобы выполнить одну команду или несколько несвязанных команд, укажите удаленные компьютеры с помощью параметра Invoke-CommandComputerName . Используйте параметр ScriptBlock , чтобы указать команду.

Например, следующая команда выполняет Get-Culture команду на компьютере Server01.

Invoke-Command -ComputerName Server01 -ScriptBlock {Get-Culture}

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

При использовании параметра ComputerName командлета Invoke-Command PowerShell устанавливает временное подключение к удаленному компьютеру. После выполнения команды подключение закрывается. Все переменные или функции, определенные во временном сеансе, теряются.

Чтобы создать постоянное подключение к удаленному компьютеру, используйте New-PSSession командлет . Например, следующая команда создает PSSessions на компьютерах Server01 и Server02, а затем сохраняет psSessions в переменной $s .

$s = New-PSSession -ComputerName Server01, Server02

Выполнение команд в PSSession

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

Например, следующая команда использует Invoke-Command командлет для выполнения Get-Process команды в PSSessions на компьютерах Server01 и Server02. Команда сохраняет процессы в переменной $p в каждом PSSession.

Invoke-Command -Session $s -ScriptBlock {$p = Get-Process}

Так как PSSession использует постоянное подключение, можно выполнить другую команду в том же PSSession, в котором используется $p переменная . Следующая команда подсчитывает количество процессов, сохраненных в $p.

Invoke-Command -Session $s -ScriptBlock {$p.count}

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

Чтобы выполнить удаленную команду на нескольких компьютерах, введите все имена компьютеров в значение параметра ComputerName для Invoke-Command. Разделите имена запятыми.

Например, следующая команда выполняет Get-Culture команду на трех компьютерах:

Invoke-Command -ComputerName S1, S2, S3 -ScriptBlock {Get-Culture}

Вы также можете выполнить команду в нескольких PSSessions. Следующие команды создают PSSessions на компьютерах Server01, Server02 и Server03, а затем выполняют Get-Culture команду в каждом из PSSessions.

$s = New-PSSession -ComputerName S1, S2, S3
Invoke-Command -Session $s -ScriptBlock {Get-Culture}

Чтобы включить список локальных компьютеров, введите имя локального компьютера, введите точку (.) или введите localhost.

Invoke-Command -ComputerName S1, S2, S3, localhost -ScriptBlock {Get-Culture}

Запуск сценария на удаленных компьютерах

Чтобы запустить локальный скрипт на удаленных компьютерах, используйте параметр FilePath для Invoke-Command. Вам не нужно копировать какие-либо файлы. Например, следующая команда выполняет Sample.ps1 скрипт на компьютерах S1 и S2:

Invoke-Command -ComputerName S1, S2 -FilePath C:\Test\Sample.ps1

PowerShell возвращает результаты скрипта на локальный компьютер.

Как остановить удаленную команду

Чтобы прервать команду, нажмите клавиши CTRL+c. PowerShell передает запрос прерывания удаленному компьютеру, на котором завершается удаленная команда.

Дополнительные сведения

См. также раздел