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


about_Remote

Назначение: Windows PowerShell 2.0, Windows PowerShell 3.0

РАЗДЕЛ

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       Stop-Computer
        Get-WinEvent      Test-Connection
        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 и затем сохраняет сеансы PSSession в переменную $s.

        $s = New-PSSession -ComputerName Server01, Server02

ЗАПУСК КОМАНД В СЕАНСЕ PSSESSION

В сеансе PSSession можно запускать ряд удаленных команд с общими данными, такими как функции, псевдонимы и значения переменных. Для выполнения команд в сеансе PSSession используется параметр Session командлета Invoke-Command.

Например, следующая команда использует командлет Invoke-Command для выполнения команды Get-Process в сеансах PSSession на компьютерах Server01 и Server02. Команда сохраняет процессы в переменной $p в каждом сеансе PSSession.

        Invoke-Command -Session $s -ScriptBlock {$p = Get-Process}

Поскольку сеанс 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_Disconnected_Sessions

about_Remote_Requirements

about_Remote_FAQ

about_Remote_TroubleShooting

about_Remote_Variables

Enter-PSSession

Invoke-Command

New-PSSession