Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
КРАТКОЕ ОПИСАНИЕ
Описывает выполнение удаленных команд в 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_Remote_Requirements.
Сведения о форматировании удаленных выходных данных см. в about_Remote_Output.
Сведения о том, как работает удаленное взаимодействие, как управлять удаленными данными, специальных конфигурациях, проблемах безопасности и другие часто задаваемые вопросы см. в разделе about_Remote_FAQ.
Сведения об устранении ошибок удаленного взаимодействия см. в about_Remote_Troubleshooting.
Сведения о PSSessions и постоянных подключениях см. в about_PSSessions.
Сведения о фоновых заданиях PowerShell см. в about_Jobs.
КЛЮЧЕВЫЕ СЛОВА
about_Remoting
СМОТРИТЕ ТАКЖЕ
about_Remote_Disconnected_Sessions