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


Сведения об удаленном подключении

КРАТКОЕ ОПИСАНИЕ

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

ПОДРОБНОЕ ОПИСАНИЕ

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

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

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

ЗАПУСК ИНТЕРАКТИВНОГО СЕАНСА (ENTER-PSSESSION)

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

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

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

Enter-PSSession Server01

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

Server01\PS>

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

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

Exit-PSSession

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

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

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

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

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

СОЗДАНИЕ ПОСТОЯННОГО ПОДКЛЮЧЕНИЯ (PSSESSION)

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

Чтобы создать постоянное подключение к удаленному компьютеру, используйте командлет New-PSSession. Например, следующая команда создает сеансы PSSessions на компьютерах Server01 и Server02, а затем сохраняет их в переменной $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}

Вы также можете выполнить команду в нескольких сеансах PSSession. Следующие команды создают сеансы 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

Результаты сценария возвращаются на локальный компьютер. Вам не нужно копировать какие-либо файлы.

ОСТАНОВКА УДАЛЕННОЙ КОМАНДЫ

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

ДОПОЛНИТЕЛЬНЫЕ СВЕДЕНИЯ

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

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

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

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

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

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

КЛЮЧЕВЫЕ СЛОВА

about_Remoting

СМ. ТАКЖЕ

about_PSSessions

about_Remote_Disconnected_Sessions

about_Remote_Requirements

about_Remote_FAQ

about_Remote_TroubleShooting

about_Remote_Variables

Enter-PSSession

Invoke-Command

New-PSSession