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


about_Remote

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

Описывает выполнение удаленных команд в 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, а затем сохраняет 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

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

КАК ОСТАНОВИТЬ УДАЛЕННУЮ КОМАНДУ

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

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

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

about_Remoting

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