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


about_Remote

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

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

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

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

Примечание.

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

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

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

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

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

Enter-PSSession Server01

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

Server01\PS>

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

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

Exit-PSSession

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

Использование командлетов с параметром ComputerName

Несколько командлетов имеют параметр ComputerName , позволяющий получать объекты с удаленных компьютеров.

Так как эти командлеты не используют удаленное взаимодействие PowerShell на основе WS-Management, можно использовать параметр ComputerName этих командлетов на любом компьютере под управлением PowerShell. Компьютеры не должны быть настроены для удаленного взаимодействия PowerShell, и компьютеры не должны соответствовать системным требованиям для удаленного взаимодействия.

Следующие командлеты имеют параметр ComputerName:

Clear-EventLog    Limit-EventLog
Get-Counter       New-EventLog
Get-EventLog      Remove-EventLog
Get-HotFix        Restart-Computer
Get-Process       Show-EventLog
Get-Service       Stop-Computer
Get-WinEvent      Test-Connection
Get-WmiObject     Write-EventLog

Например, следующая команда получает службы на удаленном компьютере Server01:

Get-Service -ComputerName Server01

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

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

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

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

Чтобы выполнить одну команду или несколько несвязанных команд, используйте параметр Invoke-Command ComputerName для указания удаленных компьютеров. Используйте параметр 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}

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

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

Например, следующая команда выполняет 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}

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

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

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

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

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

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

Для получения дополнительных сведений

  • Сведения о требованиях к системе для удаленного взаимодействия см. в about_Remote_Requirements.

  • Сведения о форматировании удаленных выходных данных см. в about_Remote_Output.

  • Сведения о том, как работает удаленное взаимодействие, как управлять удаленными данными, специальными конфигурациями, проблемами безопасности и другими часто задаваемыми вопросами о удаленном взаимодействии PowerShell.

  • Сведения об устранении ошибок удаленного взаимодействия см. в about_Remote_Troubleshooting.

  • Сведения о psSessions и постоянных подключениях см. в about_PSSessions.

  • Сведения о фоновых заданиях PowerShell см. в about_Jobs.

См. также