Использование Windows PowerShell для удаленного администрирования сервера

Завершено

Сотрудники ИТ-администрирования в компании Contoso все больше внимания уделяют удаленному администрированию с объекта, которым они управляют. Особый интерес представляет возможность использования Windows PowerShell для удаленного администрирования и управления ИТ-инфраструктурой компании Contoso. Для достижения этой цели можно использовать удаленное взаимодействие Windows PowerShell.

Требования к удаленному взаимодействию

Для удаленного взаимодействия требуется, чтобы на локальном компьютере была установлена оболочка Windows PowerShell и служба удаленного управления Windows включена на всех удаленных компьютерах, к которым необходимо подключиться. Также необходимо включить удаленное взаимодействие Windows PowerShell.

Примечание.

Удаленное взаимодействие Windows PowerShell включено по умолчанию в Windows Server, но его необходимо включить в Windows 10.

Чтобы включить удаленное взаимодействие Windows PowerShell, используйте одну из следующих процедур. В командной строке с повышенными привилегиями (или в командной строке Windows PowerShell [администратор]) выполните следующую команду:

Winrm quickconfig

Кроме того, для включения удаленного взаимодействия можно использовать следующий командлет Windows PowerShell:

Enable-PSremoting -force

Важно!

Служба удаленного управления Windows взаимодействует через HTTP. По умолчанию служба удаленного управления Windows и удаленное взаимодействие Windows PowerShell используют TCP-порт 5985 для входящих незашифрованных соединений и TCP-порт 5986 для входящих зашифрованных соединений.

Примечание.

Приложения, использующие службу удаленного управления Windows, такие как Windows PowerShell, также могут применять собственное шифрование к данным, передаваемым в службу удаленного управления Windows.

Все файлы и другие ресурсы, необходимые для выполнения определенной команды, должны находиться на удаленном компьютере, так как команды удаленного взаимодействия не копируют ресурсы. Однако можно выполнять локальные сценарии. Это связано с тем, что содержимое сценария отправляется на удаленный компьютер, а не в файл сценария.

Для удаленного администрирования администраторы должны иметь разрешение на выполнение следующих действий:

  • Подключение к удаленному устройству
  • Запуск Windows PowerShell
  • Доступ к хранилищам данных и реестру на удаленном компьютере

Внимание

Включение удаленного взаимодействия на компьютерах с сетевой картой (NIC), для которой назначен профиль расположения в общедоступной сети, вызывает ошибку. Можно использовать Enable-PSremoting -force для обхода этого ограничения и принудительного удаленного взаимодействия на устройстве с общедоступной NIC.

Выполнение командлетов на удаленных компьютерах

Несколько командлетов имеют параметр ComputerName, позволяющий извлекать объекты с удаленных компьютеров. Эти командлеты не используют удаленное взаимодействие Windows PowerShell для взаимодействия, поэтому можно использовать параметр ComputerName в этих командлетах на любом компьютере, на котором работает Windows PowerShell. Нет необходимости настраивать компьютеры для удаленного взаимодействия Windows PowerShell или выполнять требования к системе для удаленного взаимодействия.

В следующей таблице приведены дополнительные сведения о параметре ComputerName.

Command Description
Get-Command –ParameterName ComputerName Находит командлеты, использующие параметр ComputerName.
Get-Help <cmdlet-name> -parameter ComputerName Определите, требуется ли для параметра ComputerName удаленное взаимодействие Windows PowerShell.

Обработка удаленных команд

При подключении к удаленному компьютеру и отправке ему удаленной команды команда передается по сети в экземпляр Windows PowerShell на удаленном компьютере, а затем выполняется на нем. Результаты команды отправляются обратно на локальный компьютер и отображаются в сеансе Windows PowerShell на локальном компьютере.

Все локальные входные данные для удаленной команды собираются перед отправкой на удаленный компьютер. Однако выходные данные возвращаются на локальный компьютер при их создании. При подключении к удаленному компьютеру система использует учетные данные имени пользователя и пароля на локальном компьютере для проверки подлинности на удаленном компьютере.

Примечание.

По умолчанию для авторизации и проверки подлинности используется протокол проверки подлинности Kerberos версии 5 (V5). Поэтому требуется домен AD DS.

Совет

В ситуациях, когда удаленный компьютер не входит в домен или находится в ненадежном домене, можно разрешить подключение клиентского компьютера, определив удаленные компьютеры в качестве доверенных узлов.

Следующие командлеты поддерживают удаленное взаимодействие.

  • Invoke-Command
  • Enter-PSSession
  • Exit-PSSession
  • Disconnect-PSSession
  • Receive-PSSession
  • Connect-PSSession

Совет

С помощью интегрированной среды сценариев Windows PowerShell можно создавать удаленные вкладки. Чтобы выполнить эту задачу, используйте параметр Создать удаленную вкладку PowerShell из меню Файл в интегрированной среде сценариев Windows PowerShell.

При реализации удаленного взаимодействия к удаленным компьютерам можно подключиться с помощью временного сеанса или создать постоянный сеанс.

Создание временного сеанса

Во временном сеансе вы запускаете сеанс, выполняете команды, а затем завершаете сеанс. Это эффективный метод выполнения одной команды или нескольких несвязанных команд, даже на большом количестве удаленных компьютеров.

Примечание.

Переменные или функции, определенные в командах, больше не доступны после закрытия соединения.

Чтобы создать временное соединение, используйте Invoke-Commandкомандлет с параметром –ComputerName, чтобы указать удаленные компьютеры. Затем используйте параметр –ScriptBlock, чтобы указать команду. Например, следующая команда выполняется Get-EventLog на компьютере SEA-DC1:

Invoke-Command –ComputerName SEA-DC1 –ScriptBlock {Get-EventLog –log system}

Создание постоянного сеанса

Чтобы создать постоянное подключение к другому компьютеру, используйте New-PSSession командлет. Например, следующая команда создает сеанс на удаленном компьютере и сохраняет сеанс в переменной $s:

$s = New-PSSession –ComputerName SEA-DC1

Этот командлет Enter-PSSessionиспользуется для подключения и запуска интерактивного сеанса. Например, после открытия нового сеанса в SEA-DC1 следующая команда запускает интерактивный сеанс с компьютером:

Enter-PSSession $s

После входа в сеанс изменится командная строка Windows PowerShell на локальном компьютере, указывая на подключение.

A screenshot of the Administrator: Windows PowerShell dialog box. The administrator has connected remotely to SEA-DC1.

Интерактивный сеанс остается открытым до тех пор, пока вы его не закроете. Это позволяет выполнять столько команд, сколько необходимо. Чтобы завершить интерактивный сеанс, введите следующую команду.

Exit-PSSession

Выполнение удаленных команд на нескольких компьютерах

Для временных сеансов Invoke-Command командлет принимает несколько имен компьютеров. Для постоянных соединений параметр Session принимает несколько сеансов Windows PowerShell. Чтобы выполнить удаленную команду на нескольких компьютерах, включите все имена компьютеров в параметр ComputerName с помощью Invoke-Command командлета, а имена разделяйте запятыми, как показано в следующем примере:

Invoke-Command -ComputerName SEA-DC1, SEA-SVR1, SEA-SVR2 -ScriptBlock {Get-Culture}

Для постоянных сеансов можно также выполнить команду в нескольких сеансах Windows PowerShell. Следующие команды создают сеансы Windows PowerShell на SEA-DC1, SEA-SVR1 и SEA-SVR2, а затем выполняют Get-Culture команду в каждом сеансе Windows PowerShell:

$s = New-PSSession -ComputerName SEA-DC1, SEA-SVR1, SEA-SVR2

Invoke-Command -Session $s -ScriptBlock {Get-Culture}

Совет

Чтобы включить локальный компьютер в список компьютеров, введите имя локального компьютера или точку (.) или localhost.

Запуск сценария на удаленных компьютерах

Чтобы запустить локальный сценарий на удаленных компьютерах, используйте параметр FilePath с Invoke-Command. Следующая команда запускает сценарий Sample.ps1 на компьютерах SEA-DC1 и SEA-SVR1:

Invoke-Command -ComputerName SEA-DC1, SEA-SVR1 –FilePath C:\Test\Sample.ps1

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

Демонстрация

В следующем видео показано, как управлять удаленным сервером Windows Server с помощью Windows PowerShell. Основные этапы процесса следующие.

  1. Открыть командную строку PowerShell с повышенными привилегиями.

  2. Создать сеанс удаленного взаимодействия PowerShell, выполнив следующую команду:

    Enter-PSSession -ComputerName SEA-DC1
    
  3. Получить сведения о сервере, такие как имя и IP-адрес, используя стандартные командлеты Windows PowerShell.

  4. Проверить состояние службы IIS и перезапустить эту службу с помощью следующей команды:

    Get-Service -Name IISAdmin | Restart-Service
    


Краткий обзор

1.

Какой командлет можно запустить на удаленном компьютере с Windows Server, чтобы включить удаленное взаимодействие PowerShell?