РАЗДЕЛ 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