Использование 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 на локальном компьютере, указывая на подключение.
Интерактивный сеанс остается открытым до тех пор, пока вы его не закроете. Это позволяет выполнять столько команд, сколько необходимо. Чтобы завершить интерактивный сеанс, введите следующую команду.
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. Основные этапы процесса следующие.
Открыть командную строку PowerShell с повышенными привилегиями.
Создать сеанс удаленного взаимодействия PowerShell, выполнив следующую команду:
Enter-PSSession -ComputerName SEA-DC1
Получить сведения о сервере, такие как имя и IP-адрес, используя стандартные командлеты Windows PowerShell.
Проверить состояние службы IIS и перезапустить эту службу с помощью следующей команды:
Get-Service -Name IISAdmin | Restart-Service