РАЗДЕЛ
about_Remote
КРАТКОЕ ОПИСАНИЕ
Описывает, как выполнять удаленные команды в Windows PowerShell.
ПОЛНОЕ ОПИСАНИЕ
Удаленные команды можно выполнять на одном компьютере или на
нескольких компьютерах, используя временное или постоянное
подключение. Кроме того, можно создать интерактивный сеанс
с одним удаленным компьютером.
В этом разделе представлен ряд примеров, демонстрирующих порядок
выполнения удаленных команд различных типов. После практического
ознакомления с этими базовыми командами прочитайте разделы
справки для каждого командлета, используемого в этих командах.
В этих разделах приводятся подробные сведения и объясняется порядок
изменения команд в соответствии с конкретными потребностями.
Примечание. Для использования удаленного взаимодействия
Windows PowerShell локальный и удаленный компьютеры
должны быть настроены на удаленное взаимодействие.
Дополнительные сведения см. в разделе
about_Remote_Requirements.
СОЗДАНИЕ ИНТЕРАКТИВНОГО СЕАНСА (ENTER-PSSESSION)
Самый простой способ выполнить удаленные команды - создать
интерактивный сеанс с удаленным компьютером.
После начала сеанса вводимые команды выполняются на удаленном
компьютере, как будто они вводятся непосредственно на нем. В каждом
интерактивном сеансе можно подключиться только к одному компьютеру.
Чтобы запустить интерактивный сеанс, используйте командлет
Enter-PSSession. Следующая команда начинает интерактивный сеанс
с компьютером Server01:
enter-pssession server01
Командная строка изменяется, чтобы указать, что установлено
подключение к компьютеру Server01.
Server01\PS>
Теперь можно вводить команды на компьютере Server01.
Чтобы завершить интерактивный сеанс, введите следующую команду:
exit-pssession
Дополнительные сведения см. в описании командлета Enter-PSSession.
ИСПОЛЬЗОВАНИЕ КОМАНДЛЕТОВ С ПАРАМЕТРОМ COMPUTERNAME ДЛЯ ПОЛУЧЕНИЯ
УДАЛЕННЫХ ДАННЫХ
Некоторые командлеты имеют параметр ComputerName, который
позволяет получать объекты удаленных компьютеров.
Поскольку эти командлеты не используют для связи удаленное
взаимодействие Windows PowerShell на основе WS-Management, можно
применять их параметр ComputerName на любом компьютере с запущенной оболочкой Windows
PowerShell.
Компьютеры не обязательно должны быть настроены на удаленное
взаимодействие Windows PowerShell и не обязательно должны
соответствовать системным требованиям для удаленного взаимодействия.
Параметр ComputerName предусмотрен в следующих командлетах.
Clear-EventLog Limit-EventLog
Get-Counter New-EventLog
Get-EventLog Remove-EventLog
Get-HotFix Restart-Computer
Get-Process Show-EventLog
Get-Service Show-Service
Get-WinEvent Stop-Computer
Get-WmiObject Write-EventLog
Например, следующая команда получает службы на удаленном
компьютере Server01:
get-service -computername server01
Обычно командлеты, поддерживающие удаленную работу без специальной
настройки, имеют параметр ComputerName и не имеют параметра Session.
Чтобы найти эти командлеты в текущем сеансе, введите команду:
get-command | where { $_.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. Например,
следующая команда создает сеансы PSSession на компьютерах
Server01 и Server02, а затем сохраняет эти сеансы в переменной $s.
$s = new-pssession -computername Server01, Server02
ВЫПОЛНЕНИЕ КОМАНД В СЕАНСЕ PSSESSION
В сеансе PSSession можно выполнить несколько удаленных команд,
совместно использующих такие данные, как функции, псевдонимы и
значения переменных.
Для выполнения команд в сеансе PSSession используйте параметр Session
командлета Invoke-Command.
Например, следующая команда использует командлет Invoke-Command
для выполнения команды Get-Process в сеансах PSSession на
компьютерах Server01 и Server02. Команда сохраняет процессы
в переменной $s в каждом сеансе 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. Следующие команды создают сеансы PSSession на
компьютерах Server01, Server02 и Server03, а затем выполняют
команду Get-Culture в каждом сеансе PSSession.
$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.
-- Сведения о сеансах PSSession и постоянных подключениях см.
в разделе about_PSSessions.
-- Сведения о фоновых заданиях Windows PowerShell см в разделе
about_Jobs.
КЛЮЧЕВЫЕ СЛОВА
about_Remoting
СМ. ТАКЖЕ
about_PSSessions
about_Remote_Requirements
about_Remote_FAQ
about_Remote_TroubleShooting
Enter-PSSession
Invoke-Command
New-PSSession