PowerShell Remoting — настройка и удаленное управление / Хабр
Здесь минимум теории, в основном практическая часть. Описывается как настроить WinRM, как изменить профиль сетевого адаптера, дается скрипт по добавлению в TrustedHosts с фильтрацией, объясняется зачем нужны доверенные хосты, и рассматриваются поверхностно удаленные подключения так чтобы можно было сесть и сразу админить удаленные машины.
Наиболее простой путь сконфигурировать удаленное управление это выполнить Enable-PSRemoting в оболочке powershell с правами администратора. При этом произойдет следущее:
- запустится служба WinRM (если запущена перезапустится)
- служба WinRM перейдет в состояние — автоматический запуск при старте
- будет создан прослушиватель WinRM для HTTP трафика на порту 5985 для всех локальных IP адресов
- будет создано правило файрвола для прослушивателя WinRM. Внимание, этот пункт завершится с ошибкой если любая из сетевых карточек имеет тип сети «публичная», т.к. открывать порт на такой карточке не хорошо. Если у вас при конфигурировании вышла такая ошибка измените профиль это сетевушки командлетом
После этого нужно разрешить подключаться к удаленной машине с той машины с которой будет происходить управление. Сделано это в целях безопасности для того чтобы уменьшить риск взлома сессии удаленного управления или DNS с подстановкой себя вместо удаленной машины и предотвратить исполнение скриптов на машинах которые вы принудительно не разрешили.
для проверки куда можно подключаться используем:
get-item wsman:\localhost\Client\TrustedHosts
для разрешения подключаться ко всем
set-item wsman:localhost\client\trustedhosts -value *
Если вы открываете доступ для всех указав * то WinRM будет подключаться ко ВСЕМ машинам без проверки. Помните, что вы открываете самого себя для потенциального взлома из локальной сети. Лучше указывать адреса хостов куда вам нужно подключится, тогда WinRM будет отклонять все остальные адреса или имена. Если машина с которой ведется управление находится в домене она будет доверять всем машинам этого домена. Если она не в домене, или в другом домене, то нужно указать в TrustedHosts адрес или имя машины на которую мы будем подключаться.
в хелпе указаны команды, я их чуть чуть переделал в скрипт
###################################################################################### # добавляет NewHost в список TrustedHost с фильтрацией если такая строка уже есть # можно дергать из командной строки указывая параметр напрямую например # .\Add-TrustedHost.ps1 192.168.2.1 ###################################################################################### param ( $NewHost = '192.168.2.89' ) Write-Host "adding host: $NewHost" $prev = (get-item WSMan:\localhost\Client\TrustedHosts).value if ( ($prev.Contains( $NewHost )) -eq $false) { if ( $prev -eq '' ) { set-item WSMan:\localhost\Client\TrustedHosts -Value "$NewHost" } else { set-item WSMan:\localhost\Client\TrustedHosts -Value "$prev, $NewHost" } } Write-Host '' Write-Host 'Now TrustedHosts contains:' (get-item WSMan:\localhost\Client\TrustedHosts).value
он проверяет на есть ли такая запись, если нет то добавляет в список. Вызывать можно из командной строки указав адрес или имя.
Есть разница указывать имя или адрес. Если в TrustedHosts будет только адрес то открыть сессию по имени не получится, и наоборот — если указать имя то прицепится по адресу не получится. Учитывайте это.
Часто встречается ссылка на команду
WinRM quickconfig
это не тоже самое что
Enable-PSRemotingв чем же разница
Enable-PSRemoting делает больше действий чем «winrm quickconfig». Командлет Set-WSManQuickConfig делает точно такие же действия как «winrm quickconfig». Enable-PSRemoting запускает Set-WSManQuickConfig когда ведет настройку системы
Set-WSManQuickConfig делает следущие действия:
- запускат WinRM сервис
- устанавливает автостарт службы WinRM в автоматический
- создает прослушиватель
Enable-PSRemoting кроме этого делает еще следущее
- включает все зарегистрированные конфигурации сессий PowerShell для получения инструкций от удаленных машин
- регистрирует конфигурацию если она не зарегистрирована «Microsoft.PowerShell»
- регистрирует конфигурацию если она не зарегистрирована «Microsoft.PowerShell32» на 64 битных машинах
- убирает запрет «Deny Everyone» из дескриптора безопасности всех конфигураций сессий
- перезапускает сервис WinRM
источник
Enable-PSRemoting TechNet
Set-WSManQuickConfig TechNet
Удаленные подключения
1. Сессии 1-to-1
открываются командой
Enter-PSSession -ComputerName Test
Вы получите оболочку на удаленной машине. Подключится можно к самому себе указав localhost. Альтернативные кредиталы указываются с параметром
-Credential, выход происходит командлетом
Exit-PSSessionОграничения следующие:
- нельзя сделать второй прыжок — только 1 сессия, внутри сессии подключиться дальше нельзя
- вы не можете использовать команды имеющие графический интерфейс. Если вы это сделаете оболочка повиснет, нажмите Ctrl+C чтобы отвисло
- вы не можете запускать команды имеющие свой собственый шел, например nslookup, netsh
- вы можете запускать скрипты если политика запуска на удаленной машине позволяет их запускать
- нельзя прицепится к интерактивной сессии, вы заходите как «network logon», как будто прицепились к сетевому диску. Поэтому не запустятся логон скрипты, и вы можете не получить домашнюю папку на удаленной машине (лишний довод чтобы не мапать хом фолдеры логон скриптами)
- вы не сможете взаимодействовать с юзером на удаленной машине даже если он туда залогинен. Не получится показать ему окошко или попечатать чтонибудь ему.
этот способ лучше всего для простых операций, зашел, подергал сервер и отключился. Если нужно удержать переменные в скопе, нужна длительная операция (много часов или дней), нужно больше возможностей по администрированию то нужно использовать технику попродвинутее.
Комментарий.
объекты переданные по сети обрезаются и перестают быть живыми. У них удаляются методы, свойства остаются. Вытащить объект на свою машину, поколдовать и засунуть обратно не получится. Если нужно больше пишите, допишу отдельно.
2. Сессии 1-to-many
Invoke-Command
определяем что будем исполнять так:
$sb = { команды для удаленной машины разделенные точкой с запятой }
передаем на удаленные машины Test1 и Test2
Invoke-Command -ComputerName Test1, Test2 -ScriptBlock $sb
за раз можно забросить на 32 машины. Если альтернативные кредиталы то используем параметр -Credential
Чтобы передать целиком скрипт вместо параметра -ScriptBlock пишем -FilePath, удаленной машине НЕ нужно иметь доступ к файлу, он будет разобран на запчасти, передан через HTTP и выполнен с той стороны.
Запомним что на той стороне будет новый скоп, так что ваш скрипт не получит значений из вашей консоли, а переменные скрипта могут оказаться на той стороне пустыми. Поэтому передавайте сразу целиком готовые инструкции и скрипты с параметрами.
для полноценного использования Invoke-Command надо уметь превращать строки в скрипт блоки. Например у вас есть команды которые зависят от какогото списка, вам нужно сгенерировать строку, превратить ее в ScriptBlock и отправить на удаленный комп:
$sb = [Scriptblock]::Create( $SomeString )
kuda78
В статье пропущен очень важный момент — передача параметров в скрипт на удаленной машине.$deployRemote = {
param(
[string]$targetEnvName,
[string]$targetUsername)
$Global:ErrorActionPreference = «Stop»
#…
}Invoke-Command -Session $session -ScriptBlock $deployRemote -ArgumentList ($targetEnvName, $targetUsername)
Да действительно пропущен. Сделал сознательно чтобы не загромождать обзор параметрами и описаниями. Спасибо. Параметр -ArgumentList работает как со скрипт блоками так и со сценариями
3. Сессии
Это когда с той стороны создается копия пошика постоянно висящая в памяти, и в нее отправляются команды. Как результат к ней можно переподключится, ченить долгое запустить на исполнение, цепляться из разных скриптов или разными юзерами. Например у вас есть набор скриптов решающих одну задачу по частям, каждый из них поочереди может подключатся к одной удаленной сессии, видеть результаты работы предыдущих команд, иметь одни загруженные модули, общие переменные, общее окружение, до тех пор пока сессия не будет принудительно закрыта.
Создание сессии происходит командлетом New-PSSession, результат можно поместить в переменную
$DC01 = New-PSSession -ComputerName DC01
$Controllers = New-PSSession DC01, DC02, DC03
использовать можно такие же параметры подключения как в Invoke-Command
Как использовать:
если 1-to-1
Enter-PSSession -Session $DC01
если 1-to-many
Invoke-Command -Sessions $Controllers -ScriptBlock {get-eventlog -logname security -newest 50}
посмотреть какие сессии открыты можно с помощью Get-PSSession, закрыть Remove-PSSession
закрыть вообще все сессии
Get-PSSession | Remove-PSSession
прицепится к сессии можно с помощью Connect-PSSession, отключиться через Disconnect-PSSession
Invoke-Command может создать сразу disconnected сессию, он отправляет команды на исполнение и отключатся, позже можно подключится и сгрузить результаты работы. Делается это параметром -Disconnected. Получение результатов через командлет Recieve-PSSession.
Сессии имеют очень много настроек, возможно даже создание сессий с обрезаным набором команд, модулей и т.п. Называется custom endpoints
Enable-PSRemoting
Настраивает компьютер для получения удаленных команд.
Enable-PSRemoting [-Force] [-Confirm] [-WhatIf] [<CommonParameters>]
Командлет Enable-PSRemoting настраивает компьютер на получение удаленных команд Windows PowerShell, отправляемых с использованием технологии WS-Management.
Эту команду необходимо выполнить только один раз на каждом компьютере, который будет получать команды. Ее не нужно выполнять на компьютерах, которые только отправляют команды. Поскольку конфигурация активирует прослушиватели, рекомендуется запускать ее только в случае необходимости.
Командлет Enable-PSRemoting выполняет следующие операции.
— Выполняет Set-WSManQuickConfig командлет, который осуществляет следующие задачи.
—— Запускает службу WinRM.
—— Задает тип запуска службы WinRM как автоматический.
—— Создает прослушиватель, который принимает запросы на любой IP-адрес.
—— Разрешает исключение брандмауэра для связи WS-Management.
— Разрешает для всех зарегистрированных конфигураций сеанса Windows PowerShell получение инструкций от удаленного компьютера.
—— Регистрирует конфигурацию сеанса «Microsoft.PowerShell», если она еще не зарегистрирована.
—— Регистрирует конфигурацию сеанса «Microsoft.PowerShell32» на компьютерах с 64-разрядными ОС, если она еще не зарегистрирована.
—— Удаляет параметр «Deny Everyone» из дескриптора безопасности для всех зарегистрированных конфигураций сеанса.
—— Перезагружает службу WinRM, чтобы ранее внесенные изменения вступили в силу.
Чтобы использовать этот командлет в Windows Vista, Windows Server 2008 и более поздних версиях Windows, необходимо запускать Windows PowerShell командой «Запуск от имени администратора».
-Force
Подавляет все запросы подтверждения. По умолчанию выдается запрос на подтверждение каждой операции.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
False |
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-Confirm
Запрашивает подтверждение перед выполнением команды.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-WhatIf
Описывает, что произойдет при выполнении команды, без ее фактического выполнения.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
<CommonParameters>
Данный командлет поддерживает общие параметры -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer и -OutVariable. Дополнительные сведения см. в разделе about_Commonparameters.
Входным типом является тип объектов, которые можно передавать командлету по конвейеру. Возвращаемым типом является тип объектов, возвращаемых командлетом.
Входные данные |
None Передать входные данные этому командлету по конвейеру невозможно. |
Выходные данные |
System.String Enable-PSRemoting возвращает строки, описывающие его результаты. |
C:\PS>enable-psremoting Описание ----------- Эта команда настраивает компьютер для получения удаленных команд.
C:\PS>enable-psremoting -force Описание ----------- Эта команда настраивает компьютер для получения удаленных команд. Она использует параметр Force для подавления подтверждений.
powershell enable-psremoting для удаленной машины
Включение Ps-Remoting на машине, для которой у меня есть доступ администратора с другой машины, вызвало эту ошибку Access is denied.
+ CategoryInfo : InvalidOperation: (:) [Set-WSManQuickConfig], In
validOperationException
+ FullyQualifiedErrorId : WsManError,Microsoft.WSMan.Management.SetWSManQu
ickConfigCommand
Какой-то альтернативный способ включения ПС-удаленное взаимодействие в удаленном компьютере ?
powershellПоделиться Источник user1358492 26 апреля 2012 в 11:02
3 ответа
- Powershell v2 дистанционное управление и делегирование
Я установил Powershell V2 на 2 машины и запустил Enable-PsRemoting на обеих. Обе машины являются Win 2003 R2 и присоединены к одному и тому же домену active directory, и я могу успешно выполнять команды удаленно. Таким образом, PS remoting работает между локальным сервером и удаленным сервером. Но…
- Запуск Powershell повышен с PSExec (enable-psremoting)
Я пытаюсь включить-psremoting с PSexec на моих серверах с помощью следующей команды: psexec.exe \\server cmd /c echo . | powershell (-verb runas -argumentlist (enable-psremoting -force)) но это не работает. Наверное, я перепутал свои двойные кавычки. Кто-нибудь поможет? Суне:)
0
Запланируйте задание на удаленной машине, на которой выполняется сценарий powershell. В сценарии запустите командлет Enable-PSRemoting с переключателем force. Этот процесс должен быть повышен.
Поделиться Shay Levy 26 апреля 2012 в 13:46
0
В домене, в котором мне повезло с PsExec
.\psexec \\servername -s -d powershell "Enable-PSRemoting -Force"
-s запускает удаленный процесс в системной учетной записи.
Поделиться noam 20 ноября 2012 в 20:12
0
Вот мое руководство по устранению неполадок для устранения этой проблемы, оно охватывает:
- Подключена ли ваша машина к домену или рабочей группе?
- Вы вошли в систему как локальный администратор?
- Был ли PowerShell запущен как ‘Administrator’?
- Ваш пароль пуст?
- Вы пытаетесь подключиться к ферме SharePoint?
- Ваш Сервер размещен/управляется хостинговой компанией?
- Вы используете VirtualBox?
- Вы управляете Windows XP?
- Вы выполняете команду на компьютере, где язык не установлен на английский?
https://serverfault.com/questions/337905/enabling-powershell-remoting-access-is-denied
Поделиться Ralph Willgoss 18 января 2014 в 17:32
Похожие вопросы:
Запуск Java класса из Powershell удаленно
Я пытаюсь запустить простой файл java удаленно с моей машины, используя файлы Powershell. Java , которые требуют от пользователя ввода аргумента во время выполнения. Powershell успешно подключается…
Применение командлета `Enable-PSRemoting` для заданных компьютеров
PowerShell 4.0, Windows домен От get-help Enable-PSRemoting : Вам нужно выполнить эту команду только один раз на каждом компьютере, который будет получать команды. Хорошо, но наша компания имеет…
Как выполнить скрипт powershell, доступный на удаленной машине?
Я пытался выполнить сценарий на удаленном компьютере. Я сделал Enable-PSremoting в удаленной машине. Я поместил скрипт hello.ps1 в удаленную машину. [Моя клиентская машина-Windows XP, а удаленный…
Powershell v2 дистанционное управление и делегирование
Я установил Powershell V2 на 2 машины и запустил Enable-PsRemoting на обеих. Обе машины являются Win 2003 R2 и присоединены к одному и тому же домену active directory, и я могу успешно выполнять…
Запуск Powershell повышен с PSExec (enable-psremoting)
Я пытаюсь включить-psremoting с PSexec на моих серверах с помощью следующей команды: psexec.exe \\server cmd /c echo . | powershell (-verb runas -argumentlist (enable-psremoting -force)) но это не…
Включить-Psremoting удаленно
я хочу включить powershell remoting на другом компьютере удаленно . И удаленный компьютер требует аутентификации. Я попытался создать batch file, который планирует выполнение задачи…
Не удалось выполнить сценарий Power shell из C# с помощью команды Invoke-Command на удаленной машине
Я не могу выполнить сценарий файла Powershell из C# с помощью Invoke-Command на удаленной машине, но в то же время я могу выполнить тот же файл сценария с помощью Invoke-Command на удаленной машине…
Запуск удаленной команды cmd в PowerShell
Я загрузил несколько файлов на удаленный хост с PowerShell, по FTP. На этом хосте работает Windows 7 Embedded . Оказывается, есть EWF (Расширенный фильтр записи). Поэтому после перезагрузки…
Enable-PSRemoting возвращает ошибку невозможно проверить состояние брандмауэра
Когда я запускаю команду Enable-PSRemoting, я получаю следующую ошибку: PS C:\Windows\system32> включить-PSRemoting WinRM Quick Configuration Running command Set-WSManQuickConfig to enable remote…
Enable-PSRemoting error: не удается найти службу с именем ‘winrm’
Я запускаю скрипт powershell в Azure Automation runbook. При выполнении Enable-PSRemoting -SkipNetworkProfileCheck — Force я получаю сообщение об ошибке , что нет службы с именем winrm . Есть…
Как включить PowerShell Remoting с помощью групповой политики
PowerShell Remoting — это очень мощный инструмент, которым пользуется каждый администратор. Он позволяет удаленно управлять клиентскими и серверными версиями Windows при помощи PowerShell.
В Windows Server 2016 и Windows Server 2012 R2 функция PowerShell Remoting включена по умолчанию. Однако в предыдущих версиях Windows Server, а также в клиентских версиях Windows эту функцию необходимо включать самостоятельно. Поскольку нецелесообразно и не удобно включать эту функцию персонально на каждом сервере (используя cmdlet Enable-PSRemoting в интерактивном режиме), мы воспользуемся групповой политикой.
Для включения PowerShell Remoting не существует конкретной политики, поэтому нам необходимо будет создать новую групповую политику и настроить все необходимые параметры. Мы создадим HTTP(S) Listener, настроим автоматический запуск службы WinRM и установим соответствующие правила в брандмауэре Windows.
Включение PowerShell Remoting с помощью групповой политики
Для начала откройте окно «Group Policy Management Console» и создайте новый объект групповой политики. Вам не нужно сразу применять групповую политику для целевой OU с серверами. Перед тем как применять политику ко всем серверам крайне рекомендуется сначала ее работу протестировать.
Настройка политики WinRM Listeners
В окне редактора GPO перейдите в раздел Computer Configuration -> Administrative Templates -> Windows Components -> Windows Remote Management (WinRM) -> WinRM Service
Откройте политику «Allow remote server management via WinRM» и выберите пункт «Enabled». В полях «iPv4 filter» и «iPv6 filter» введите символ (*), чтобы указать все IP-адреса. Для большей безопасности вы можете указать определенный диапазон IP-адресов, с которых будет доступно подключение через WinRM.
Настройка автозапуска службы WinRM
Запуск службы WinRM (по умолчанию) происходит автоматически, но это только в последних версиях Windows Server. Однако это не относится к клиентским компьютерам c Windows. Можно также запустить службу при помощи групповой политики. Следует помнить, что групповая политика запустит службу WinRM только после перезагрузки компьютера, т.е. через GPO не получится динамически запустить службу сразу на всех ПК.
Откройте окно Computer Configuration -> Windows Settings -> Security Settings -> System Services. В списке служба найдите и выберите службу «Windows Remote Management (WS-Management)». Откроется окно «Windows Remote Management (WS-Management) Properties». Выберите пункт «Automatic», как показано на рисунке ниже.
Настройка брандмауэра Windows
Откройте раздел групповых политик Computer Configuration -> Policies -> Windows Settings -> Security Settings -> Windows Firewall with Advanced Security
Щелкните правой кнопкой мыши по пункту «Inbound Rules» и выберите пункт «New Rule» для создания нового правила. В появившемся окне активируйте пункт «Predefined» и выберите значение «Windows Remote Management».
Из списка выберите необходимые типы сетей Domain / Private / Public для которых разрешено подключение через Windows Remote Managment.
В заключении, выберите пункт «Allow the connection» и нажмите кнопку «Finish», после этого в брандмауэре Windows будет создано новое правило.
Осталось протестировать политику включения WinRm на тестовых OU и можно внедрят ее в продакшн!
PowerShell. Решение проблем связынных с удалённым подключением (about_Remote_Troubleshooting) — Клёвый код
В этом разделе описываются некоторые из проблем, которые могут возникнуть при использовании функций удалённого взаимодействия Windows PowerShell, основанные на технологии WS-Management, и предлагаются решения этих проблем.
Перед использованием удалённого взаимодействия Windows PowerShell , рекомендуется ознакомиться с about_Remote и about_Remote_Requirements для изучения руководств по конфигурации и базовом использовании удалённого взаимодействия. Кроме того, справки по каждому из командлетов удаленного взаимодействия, в частности описание параметров, имеют полезную информацию, которая предназначена, чтобы помочь вам избежать проблем.
Обновленные версии этой темы, и другие справки Windows PowerShell, могут быть скачаны с помощью командлета Update-Help.
ПРИМЕЧАНИЕ: Чтобы просмотреть или изменить настройки для локального компьютера на диске WSMan: , в том числе изменить конфигурацию сессий, доверенных хостов, портов или слушателей, запустите Windows PowerShell с параметром «Запуск от имени администратора».
Решение вопросов, связанных с правами доступа и аутентификации
В этом разделе обсуждаются проблемы удаленного взаимодействия, связанные с правами доступов пользователей, компьютеров, и требованиями к удаленному взаимодействию.
Как запустить от имени администратора
ОШИБКА: Отказано в доступе. Вам необходимо запустить этот командлет с повышенными правами.
ERROR: Access is denied. You need to run this cmdlet from an elevated process.
Чтобы запустить сессию удаленного взаимодействия на локальном компьютере, или просмотреть и изменить настройки локального компьютера на диске WSMan:, в том числе изменить конфигурацию сессий, доверенных хостов, портов или слушателей, необходимо запустить Windows PowerShell командой «Запуск от имени администратора».
Чтобы запустить Windows PowerShell командой «Запуск от имени администратора»:
— Щелкните правой кнопкой мыши по значку Windows PowerShell (или Windows PowerShell ISE) и нажмите «Запуск от имени администратора».
Чтобы запустить Windows PowerShell командой «Запуск от имени администратора» в Windows 7 и Windows Server 2008 R2.
— На панели задач Windows, щелкните правой кнопкой мыши значок Windows PowerShell, а затем нажмите кнопку «Запуск от имени администратора».
Примечание: По умолчанию, в Windows Server 2008 R2, значок Windows PowerShell закреплен на панели задач .
Как включить удаленное взаимодействие
ОШИБКА: доступ запрещен
ERROR: ACCESS IS DENIED
или
ОШИБКА: В соединении с удаленным хостом было отказано. Убедитесь, что служба WS-Management запущена на удаленном хосте и настроена для прослушивания запросов на правильный порт и HTTP URL.
ERROR: The connection to the remote host was refused. Verify that the WS-Management service is running on the remote host and configured to listen for requests on the correct port and HTTP URL.
Для того, что бы компьютер отправлял удалённые команды не требуется ни каких настроек. Тем не менее, для получения удаленных команд, Windows PowerShell Remoting должен быть настроен на удалённом компьютере. Настройка включает в себя запуск службы WinRM, установка типа запуска для службы WinRM в Automatic режим, настройка прослушивания HTTP и HTTPS соединений, а также создание конфигураций сеансов по умолчанию.
По умолчанию, Windows PowerShell Remoting включен в Windows Server 2012 и более новых версиях серверных систем Windows. Чтобы включить удаленное взаимодействие, на всех других системах, необходимо запустить командлет Enable-PSRemoting. На Windows Server 2012 и более новых версиях Windows Server, можно так же повторно запустить командлет Enable-PSRemoting, это включит удаленное взаимодействие, если оно было отключено.
Чтобы настроить компьютер на получение удаленных команд, воспользуйтесь командлетом Enable-PSRemoting. Этот командлет настроит все необходимые параметры удаленного взаимодействия, настроит конфигурацию сессий и перезапустит службы WinRM, чтобы изменения вступили в силу.
Для подавления всех пользовательских подсказок укажите парметр -Force:
Для получения дополнительной информации см Enable-PSRemoting.
Как включить удаленное взаимодействие на предприятии
ОШИБКА: доступ запрещен
ERROR: ACCESS IS DENIED
или
ОШИБКА: В соединении с удаленным хостом было отказано. Убедитесь, что служба WS-Management запущена на удаленном хосте и настроена для прослушивания запросов на правильный порт и HTTP URL.
ERROR: The connection to the remote host was refused. Verify that the WS-Management service is running on the remote host and configured to listen for requests on the correct port and HTTP URL.
Для настройки одного компьютера на приёма соединений и выполнения на нём удалённых команд в Windows PowerShell, используется командлет Enable-PSRemoting.
Чтобы включить удаленное взаимодействие на нескольких компьютерах в предприятии, можно воспользоваться следующим вариантом.
— Чтобы настроить слушателей на удаленное взаимодействие, надо включить параметр «Allow automatic configuration of listeners» в групповой политике. Для получения инструкций см «Как включить слушателей с помощью групповой политики» (раздел ниже).
— Чтобы на нескольких компьютерах изменить тип запуска Windows Remote Management (WinRM) на Automatic, используется командлет Set-Service. Для получения инструкций см «Как изменить тип запуска, в службе WinRM» (раздел ниже).
— Чтобы настроить исключение брандмауэра, надо воспользоваться групповой политикой «Windows Firewall: Allow Local Port Exceptions». Для получения инструкций см «Как создать исключение в брандмауэре, с помощью групповой политики» (раздел ниже).
Как включить слушателей с помощью групповой политики
ОШИБКА: доступ запрещен
ERROR: ACCESS IS DENIED
или
ОШИБКА: В соединении с удаленным хостом было отказано. Убедитесь, что служба WS-Management запущена на удаленном хосте и настроена для прослушивания запросов на правильный порт и HTTP URL.
ERROR: The connection to the remote host was refused. Verify that the WS-Management service is running on the remote host and configured to listen for requests on the correct port and HTTP URL.
Чтобы настроить слушателей на всех компьютерах в домене, надо включить политику «Allow automatic configuration of listeners» находящуюся по следующему пути дерева групповых политик:
Computer Configuration\Administrative Templates\Windows Components\Windows Remote Management (WinRM)\WinRM service
Включите политику и укажите IPv4 и IPv6 фильтры. Можно воспользоваться шаблонами (*).
Как включить удаленное взаимодействие в сетях общего пользования
ОШИБКА: Не удалось проверить состояние брандмауэра
ERROR: Unable to check the status of the firewall
Командлет Enable-PSRemoting возвращает эту ошибку, когда локальная сеть является публичной, но параметр SkipNetworkProfileCheck не использовался в команде.
На серверных версиях Windows, командлет Enable-PSRemoting успешно выполняется во всех типах сетевого расположения. Он создает правила брандмауэра, разрешающие удаленный доступ к частной и доменой («Home» и «Work») сети. Для общественных сетей, он создает правила брандмауэра, которые разрешают удаленный доступ из той же локальной подсети.
На клиентских версий Windows, командлет Enable-PSRemoting успешно выполняется в частных и доменных сетях. По умолчанию, он не работает на общественных сетях, но если вы используете параметр SkipNetworkProfileCheck, командлет Enable-PSRemoting успешно создает правила брандмауэра, что разрешает трафик из той же локальной подсети.
Чтобы избавиться от ограничения локальной подсетью в сетях общего пользования и разрешить удаленный доступ из любого места сети, надо выполнить следующую команду:
Set-NetFirewallRule -Name «WINRM-HTTP-In-TCP-PUBLIC» -RemoteAddress Any
Set-NetFirewallRule -Name «WINRM-HTTP-In-TCP-PUBLIC» -RemoteAddress Any |
Командлет Set-NetFirewallRule содержится в модуле NetSecurity.
ПРИМЕЧАНИЕ: В Windows PowerShell 2.0, на компьютерах под управлением серверных версий Windows, командлет Enable-PSRemoting создает правила брандмауэра, разрешающие удаленный доступ из частных, доменых и общественных сетях. На компьютерах, работающих под управлением клиентских версий Windows, командлет Enable-PSRemoting создаёт правила брандмауэра, разрешающие удаленный доступ только из частных и доменных сетей.
Как настроить исключение брандмауэра с помощью групповой политики
ОШИБКА: доступ запрещен
ERROR: ACCESS IS DENIED
или
ОШИБКА: В соединении с удаленным хостом было отказано. Убедитесь, что служба WS-Management запущена на удаленном хосте и настроена для прослушивания запросов на правильный порт и HTTP URL.
ERROR: The connection to the remote host was refused. Verify that the WS-Management service is running on the remote host and configured to listen for requests on the correct port and HTTP URL.
Чтобы настроить исключение брандмауэра для всех компьютеров в домене, надо настроить политику «Windows Firewall: Allow local port exceptions» по следующему пути в дереве групповых политик:
Computer Configuration\Administrative Templates\Network\Network Connections\Windows Firewall\Domain Profile
Эта политика позволяет членам группы Administrators на компьютере, использовать Windows Firewall в панели управления, чтобы создать исключение в брандмауэре, для службы удаленного управления Windows.
Как установить тип запуска службы WinRM
ОШИБКА: доступ запрещен
ERROR: ACCESS IS DENIED
Windows PowerShell Remoting зависит от службы удаленного управления Windows (WinRM). Для поддержки удаленных команд служба должна быть запущена .
На серверных версиях Windows, тип запуска службы удаленного управления Windows (WinRM) автоматический.
Тем не менее, на клиентских версиях Windows, служба WinRM по умолчанию отключена.
Чтобы установить тип запуска службы на удаленном компьютере, можно воспользоваться командлетом Set-Service.
Для запуска команды на нескольких компьютерах, можно создать текстовый или CSV файл с именами компьютеров.
Например, следующие команды получают список имен компьютеров из файла Servers.txt, а затем у всех компьютеров устанавливают тип запуска службы WinRM на автоматический.
C:\PS> $servers = Get-Content servers.txt C:\PS> Set-Service WinRM -ComputerName $servers -startuptype Automatic
C:\PS> $servers = Get-Content servers.txt C:\PS> Set-Service WinRM -ComputerName $servers -startuptype Automatic |
Увидеть результаты можно с помощью командлета Get-WmiObject получив данные из объекта Win32_Service. Для получения дополнительной информации см Set-Service.
Как настроить конфигурацию сессий по умолчанию
ОШИБКА: доступ запрещен
ERROR: ACCESS IS DENIED
Для подключения к локальному компьютеру и выполнения команд удаленно, локальный компьютер должен содержать конфигурацию сессий для удаленных команд.
По умолчанию, при использовании командлета Enable-PSRemoting, создаётся конфигурация сессий на локальном компьютере. Удаленные пользователи используют эту конфигурацию сессий каждый раз, когда удалённая команда не использует параметр ConfigurationName.
Если конфигурация по умолчанию на компьютере не зарегистрирована или удалена, можно воспользоваться командлетом Enable-PSRemoting для её восстановления. Вы можете использовать эту команду несколько раз. Это не приведёт к возникновению ошибок, если функция уже настроена.
Если вы изменили конфигураций сессий по умолчанию и хотите восстановить исходные настройки конфигурации сессий по умолчанию. Надо воспользоваться командлетом Unregister-PSSessionConfiguration, для удаления изменённой конфигурации сесий. А затем использвать командлет Enable-PSRemoting, что бы восстановить настройки по умолчанию. командлет Enable-PSRemoting не изменяет существующую конфигурацию сессий.
Примечание: Командлет Enable-PSRemoting восстанавливая конфигурацию сеанса по умолчанию, он не создает явные дескрипторы безопасности для конфигураций. Вместо этого, конфигурация наследуют дескриптор безопасности RootSDDL, который является дескриптором безопасной по умолчанию.
Чтобы увидеть дескриптор безопасности RootSDDL, выполните:
Get-Item wsman:\localhost\Service\RootSDDL
Get-Item wsman:\localhost\Service\RootSDDL |
Чтобы изменить RootSDDL, используются командлеты Set-Item на диске WSMan:. Чтобы изменить дескриптор безопасности конфигурации сеанса, используйется командлет Set-PSSessionConfiguration с параметром SecurityDescriptorSDDL или ShowSecurityDescriptorUI.
Для получения более подробной информации о диске WSMan:, можно посмотреть раздел справки для поставщика WS-Management («Get-Help WSMan»).
Как обеспечить администратора необходимыми полномочиями
ОШИБКА: доступ запрещен
ERROR: ACCESS IS DENIED
По умолчанию, для создания PSSession или выполнения команд на удаленном компьютере, текущий пользователь должен быть членом группы администраторов на удаленном компьютере. Иногда требуется явный запуск с правами администратора, даже если текущий пользователь вошел в систему с учетной записью, которая является членом группы администраторов.
Если текущий пользователь является членом группы администраторов на удаленном компьютере, или может предоставить учетные данные члена группы администраторов, для удаленного подключения нужно передать учётные данные администратора с помощью параметра Credential в командлетах New-PSSession, Enter-PSSession или Invoke-Command.
Например, следующая команда предоставляет учетные данные администратора.
Invoke-Command -ComputerName Server01 -Credential Domain01\Admin01
Invoke-Command -ComputerName Server01 -Credential Domain01\Admin01 |
Для получения более подробной информации о параметре Credential, можно посмотреть справку к командлетам New-PSSession, Enter-PSSession или Invoke-Command.
Как включить удаленное взаимодействие для пользователей не являющимися администраторами
ОШИБКА: доступ запрещен
ERROR: ACCESS IS DENIED
Чтобы установить PSSession или выполнить команду на удаленном компьютере, текущий пользователь должен иметь разрешение на использование конфигураций сеансов на удаленном компьютере.
По умолчанию, только члены группы администраторов на текущем компьютере имеют разрешение на использование конфигураций сеансов по умолчанию. Таким образом, только члены группы Администраторы могут подключаться к компьютеру удаленно.
Чтобы разрешить другим пользователям подключаться к локальному компьютеру, необходимо выдать пользователю разрешения на выполнение конфигураций сеансов по умолчанию на локальном компьютере.
Следующая команда открывает лист свойств, что позволяет изменять дескриптор безопасности Microsoft.PowerShell конфигурации сессии по умолчанию на локальном компьютере.
Set-PSSessionConfiguration Microsoft.PowerShell -ShowSecurityDescriptorUI
Set-PSSessionConfiguration Microsoft.PowerShell -ShowSecurityDescriptorUI |
Для получения дополнительной информации см about_Session_Configurations.
Как включить удаленное взаимодействие для администраторов в других доменах
ОШИБКА: доступ запрещен
ERROR: ACCESS IS DENIED
Когда пользователь из другого домена являются членом группы администраторов на локальном компьютере, этот пользователь не может подключиться к локальной компьютеру удаленно с правами администратора. По умолчанию, удаленные подключения из других доменов запускаются с токенами прав стандартных пользователей.
Тем не менее, вы можете изменить поведение по умолчанию, используя запись реестра LocalAccountTokenFilterPolicy и запускать удаленные подключения пользователей которые являются членами группы администраторов с правами администратора.
Внимание: Ключ LocalAccountTokenFilterPolicy отключает контроль учетных записей (UAC) удаленных подключений для всех пользователей со всех компьютеров. Обдумайте последствия изменения этого параметра, прежде чем изменять политику.
Чтобы изменить политику, используйте следующую команду, чтобы установить значение параметра реестра LocalAccountTokenFilterPolicy на 1.
C:\PS> New-ItemProperty -Name LocalAccountTokenFilterPolicy -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System -PropertyType DWord -Value 1
C:\PS> New-ItemProperty -Name LocalAccountTokenFilterPolicy -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System -PropertyType DWord -Value 1 |
Как использовать IP адрес при запуске команды удаленно
ОШИБКА: Клиенту WinRM не удается обработать запрос. Если схема аутентификации отличается от Kerberos или, если клиентский компьютер не присоединен к домену, то необходимо использовать протокол HTTPS или на сервере должны быть добавлены установки конфигурации TrustedHosts.
ERROR: The WinRM client cannot process the request. If the authentication scheme is different from Kerberos, or if the client computer is not joined to a domain, then HTTPS transport must be used or the destination machine must be added to the TrustedHosts configuration setting.
Параметр ComputerName командлетов New-PSSession, Enter-PSSession и Invoke-Command могут принимать IP-адрес в качестве значения. Тем не менее, поскольку проверка подлинности Kerberos не поддерживает IP-адреса, когда вы указываете IP адрес, по умолчанию используется аутентификация NTLM.
Для использования проверки подлинности NTLM, требуется следующая процедура для удаленного взаимодействия.
1. Настроить компьютер для протокола HTTPS или добавить IP-адрес удаленного компьютера в список TrustedHosts на локальном компьютере.
Для получения инструкций см «Как добавить компьютер в список TrustedHosts» ниже.
2. Необходимо использовать параметр Credential во всех удаленных командах. Это необходимо, даже если вы указываете параметры аутентификации текущего пользователя.
Как создать удалённое подключение к компьютеру находящемуся в рабочей группе
ОШИБКА: Клиенту WinRM не удается обработать запрос. Если схема аутентификации отличается от Kerberos или, если клиентский компьютер не присоединен к домену, то необходимо использовать протокол HTTPS или на сервере должны быть добавлены установки конфигурации TrustedHosts.
ERROR: The WinRM client cannot process the request. If the authentication scheme is different from Kerberos, or if the client computer is not joined to a domain, then HTTPS transport must be used or the destination machine must be added to the TrustedHosts configuration setting.
Когда локальный компьютер не входит в домен, требуется следующая процедура для удаленного взаимодействия.
1. Настроить компьютер для протокола HTTPS или добавить имена удаленных компьютеров в список TrustedHosts на локальном компьютере.
Для получения инструкций см «Как добавить компьютер в список TrustedHosts» ниже.
2. Убедитесь, что задан пароль на компьютере находящийся в рабочей группе. Если пароль не задан или пароль пустой, вы не сможете выполнить удаленные команды.
Чтобы установить пароль для учетной записи пользователя, используйте «Учетные записи пользователей» в «Панели управления».
3. Используйте параметр Credential во всех удаленных командах.
Это необходимо, даже если вы отправляете параметры аутентификации текущего пользователя.
Как добавить компьютер в список доверенных хостов
Пункт TrustedHosts может содержать список имён компьютеров, IP-адреса и полные доменные имена разделенные запятыми. Шаблонные символы разрешены.
Чтобы просмотреть или изменить список доверенных узлов, можно воспользоваться диском WSMan:. Объект TrustedHost находится в дирректории WSMan:\localhost\Client.
Только члены группы администраторов данного компьютера имеют разрешения, на изменение списка доверенных хостов компьютера.
Внимание: Значение, которое устанавливается для элемента TrustedHosts влияет на всех пользователей компьютера.
Для просмотра списка доверенных хостов, можно воспользоваться следующей командой:
Get-Item wsman:\localhost\Client\TrustedHosts
Get-Item wsman:\localhost\Client\TrustedHosts |
Также можно использовать Set-Location (псевдоним cd), чтобы перейти в данную директорию на диске WSMan:. Например:
cd WSMan:\localhost\Client; dir
cd WSMan:\localhost\Client; dir |
Чтобы добавить все компьютеры в список доверенных хостов, используйте следующую команду, которая ставит значение * (все) в ComputerName
Set-Item wsman:localhost\client\trustedhosts -Value *
Set-Item wsman:localhost\client\trustedhosts -Value * |
Можно, также использовать шаблонный символ (*), чтобы добавить все компьютеры в конкретной области в список доверенных хостов. Например, следующая команда добавляет все компьютеры в домене Fabrikam в список доверенных хостов.
Set-Item wsman:localhost\client\trustedhosts *.fabrikam.com
Set-Item wsman:localhost\client\trustedhosts *.fabrikam.com |
Чтобы добавить имена конкретных компьютеров в список доверенных хостов, используйте следующий формат команды:
Set-Item wsman:\localhost\Client\TrustedHosts -Value < имя_компьютера> [, < имя_компьютера>]
Set-Item wsman:\localhost\Client\TrustedHosts -Value < имя_компьютера> [, < имя_компьютера>] |
,где каждое значение < имя_компьютера> должно иметь следующий формат:
< Компьютер>.< Домен>.< Компания>.< Домен верхнего уровня>
< Компьютер>.< Домен>.< Компания>.< Домен верхнего уровня> |
Например:
Set-Item wsman:\localhost\Client\TrustedHosts -Value Server01.Domain01.Fabrikam.com
Set-Item wsman:\localhost\Client\TrustedHosts -Value Server01.Domain01.Fabrikam.com |
Чтобы добавить имя компьютера в существующий список доверенных хостов, сначала надо сохранить текущее значение в переменную, а затем дополнить новыми значениями разделёнными запятыми образовав новый список, который включает текущие и новые значения.
Например, чтобы добавить компьютер Server01 в в существующий список доверенных хостов, используйте следующую команду
$curValue = (Get-Item wsman:\localhost\Client\TrustedHosts).value Set-Item wsman:\localhost\Client\TrustedHosts -Value «$curValue, Server01.Domain01.Fabrikam.com»
$curValue = (Get-Item wsman:\localhost\Client\TrustedHosts).value
Set-Item wsman:\localhost\Client\TrustedHosts -Value «$curValue, Server01.Domain01.Fabrikam.com» |
Чтобы добавить IP-адреса компьютеров в список доверенных хостов, используется следующий формат команды:
Set-Item wsman:\localhost\Client\TrustedHosts -Value <IP Address>
Set-Item wsman:\localhost\Client\TrustedHosts -Value <IP Address> |
Например:
Set-Item wsman:\localhost\Client\TrustedHosts -Value 172.16.0.0
Set-Item wsman:\localhost\Client\TrustedHosts -Value 172.16.0.0 |
Чтобы добавить компьютер в список TrustedHosts удаленного компьютера, можно воспользоваться командлетом Connect-WSMan. Командлет Connect-WSMan используется для добавления узла на диске WSMan: удаленного компьютера с локального компьютера. Затем используйте команду Set-Item, чтобы добавить компьютер.
Для получения более подробной информации о командлете Connect-WSMan командлета см справку Connect-WSMan.
Устранение неполадок конфигурации компьютера
В этом разделе обсуждаются проблемы удаленного взаимодействия, связанные с конкретными конфигурациями компьютера, домена или предприятия.
Как настроить удаленное взаимодействие на переменных портах
ОШИБКА: В соединении с удаленным хостом было отказано. Убедитесь, что служба WS-Management запущена на удаленном хосте и настроена для прослушивания запросов на правильный порт и HTTP URL.
ERROR: The connection to the remote host was refused. Verify that the WS-Management service is running on the remote host and configured to listen for requests on the correct port and HTTP URL.
По умолчанию Windows PowerShell Remoting использует 80 порт для HTTP протокола. Порт по умолчанию используется, когда пользователь не указал параметры ConnectionURI или порт в удаленной команды.
Чтобы изменить порт по умолчанию, который использует Windows PowerShell, используйте командлет Set-Item на диске WSMan:, чтобы изменить значение порта для прослушки.
Например, следующая команда изменяет порт по умолчанию на 8080.
Set-Item wsman:\localhost\listener\listener*\port -Value 8080
Set-Item wsman:\localhost\listener\listener*\port -Value 8080 |
Как настроить удаленное взаимодействие через прокси-сервер
ОШИБКА: клиент не может подключиться к месту назначения, указанного в запросе. Убедитесь, что служба в месте назначения работает и принимает запросы.
ERROR: The client cannot connect to the destination specified in the request. Verify that the service on the destination is running and is accepting requests.
Поскольку Windows PowerShell Remoting использует протокол HTTP, то он зависит от установок прокси на HTTP. На предприятиях, которые имеют прокси-серверы, пользователи не могут получить доступ к удаленному компьютеру Windows PowerShell напрямую.
Чтобы решить эту проблему, передайте настройки прокси-сервера при запуске удаленных команд.
Доступны следующие параметры:
— ProxyAccessType
— ProxyAuthentication
— ProxyCredential
Чтобы задать эти параметры для определенной команды, используйте следующую процедуру:
1. Используйте параметры ProxyAccessType, ProxyAuthentication и ProxyCredential с командлетом New-PSSessionOption, для создания объекта параметров сеанса с настройкми прокси-сервера вашей сети. Сохраните объект в переменной.
2. Передайте переменную, которая содержит объект с парматрами вашего прокси сервера в параметр SessionOption командлетов New-PSSession, Enter-PSSession, или Invoke-Command
Например, следующая команда создает объект с параметрами сеанса содержащий параметры прокси сервера, а затем используется этот объект, чтобы создать удаленный сеанс.
C:\PS> $SessionOption = New-PSSessionOption -ProxyAccessType IEConfig -ProxyAuthentication Negotiate -ProxyCredential Domain01\User01 C:\PS> New-PSSession -ConnectionURI https://www.fabrikam.com
C:\PS> $SessionOption = New-PSSessionOption -ProxyAccessType IEConfig -ProxyAuthentication Negotiate -ProxyCredential Domain01\User01 C:\PS> New-PSSession -ConnectionURI https://www.fabrikam.com |
Для получения более подробной информации о командлете New-PSSessionOption см справку по New-PSSessionOption.
Чтобы задать эти параметры для всех удаленных команд в текущем сеансе, присвойте значение объекта полученного из командлета New-PSSessionOption переменной $PSSessionOption. Для получения более подробной информации о привилегированной переменной $PSSessionOption см about_Preference_Variables.
Чтобы задать эти параметры для всех удаленных команд всех сессий Windows PowerShell на локальном компьютере, надо добавить привилегированную переменную $PSSessionOption в свой профиль Windows PowerShell. Для получения более подробной информации о профилях Windows PowerShell см about_Profiles.
Как обнаружить 32-битную сессию на 64-разрядном компьютере
ОШИБКА: Элемент «<tool-Name>» не распознается, как имя командлета, функции, файла скрипта или выполняемой программы. Проверьте правильность написания имени, или если был указан путь, убедитесь, что путь является правильным и попробуйте еще раз.
ERROR: The term «<tool-Name>» is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
Если удаленный компьютер работает под управлением 64-разрядной версии Windows, а дистанционная команда использует 32-битную конфигурацию сеанса, такую как Microsoft.PowerShell32. Служба удаленного управление Windows (WinRM) загружает процесс WOW64 на Windows, а Windows автоматически перенаправляет все ссылки из каталога %WinDir%\System32, в каталог %WINDIR%\SysWOW64.
В результате, если вы пытаетесь использовать инструменты из каталога System32, которые не имеют аналогов в каталоге SysWow64, таких как Defrag.exe, инструменты не могут найтись в данном каталоге.
Чтобы найти архитектуру процессора, который используется в сессии, можно воспользоваться значением переменной PROCESSOR_ARCHITECTURE окружающей среды. Следующая команда находит архитектуру процессора сессии из переменной $s.
C:\PS> $s = New-PSSession -ComputerName Server01 -configurationName CustomShell C:\PS> invoke-command -session $s {$env:PROCESSOR_ARCHITECTURE} x86
C:\PS> $s = New-PSSession -ComputerName Server01 -configurationName CustomShell
C:\PS> invoke-command -session $s {$env:PROCESSOR_ARCHITECTURE} x86 |
Для получения более подробной информации о конфигурациях сеансов см about_session_configurations.
Поиск и устранение неисправностей политик и вопросы привилегий
В этом разделе обсуждаются проблемы удаленного взаимодействия, связанные с политиками и предпочтениями на локальных и удаленных компьютерах.
Как изменить политику выполнения для командлетов Import-PSsession и Import-Module
ОШИБКА: Import-Module: Файл <имя файла> не может быть загружен, потому что выполнение скриптов отключено в этой системе.
ERROR: Import-Module: File <filename> cannot be loaded because the execution of scripts is disabled on this system.
Командлеты Import-PSSession и Export-PSSession создают модули, которые содержат не подписанные файлы скриптов и файлы форматирования.
Чтобы импортировать модули созданные этими командлетами, с помощью командлетов Import-PSSession или Import-Module, измените значение политики выполнения в текущем сеансе на Restricted или AllSigned. Дополнительные сведения о политиках выполнения Windows PowerShell можно посмотреть в about_Execution_Policies.
Чтобы импортировать модули без изменения политики выполнения для локального компьютера, который изменяет реестр, можно использовать параметр Scope командлета Set-ExecutionPolicy, что бы задать менее жёсткую политику выполнения для одного процесса.
Например, следующая команда запускает процесс с политикой выполнения RemoteSigned. Изменение политики выполнения распространяется только на текущий процесс и не изменяет параметры реестра Windows PowerShell ExecutionPolicy.
Set-ExecutionPolicy -Scope process -ExecutionPolicy RemoteSigned
Set-ExecutionPolicy -Scope process -ExecutionPolicy RemoteSigned |
Можно, также использовать параметр ExecutionPolicy при запуске PowerShell.exe, чтобы начать один сеанс с менее ограничительной политикой выполнения.
PowerShell.exe -ExecutionPolicy RemoteSigned
PowerShell.exe -ExecutionPolicy RemoteSigned |
Для получения более подробной информации о командлетах см Import-PSSession, Export-PSSession и Import-Module. Для получения более подробной информации о политике выполнения, см about_Execution_Policies. Для получения более подробной информации о powershell.exe, выполните в консоли «PowerShell.exe -?».
Как устанавливать и изменять квоты
ОШИБКА: Общее кол-во данных, полученных от удаленного клиента превысили разрешенный максимум.
ERROR: The total data received from the remote client exceeded allowed maximum.
Вы можете использовать квоты для защиты локального компьютера и удаленного компьютера от чрезмерного использования ресурсов, как случайного, так и злонамеренного.
Следующие квоты доступны в базовой конфигурации.
— Поставщик WSMan (WSMan:) предоставляет несколько параметров квот, таких, как настройки MaxEnvelopeSizeKB и MaxProviderRequests в узле WSMan:\<ComputerName> и настройки MaxConcurrentOperations, MaxConcurrentOperationsPerUser и MaxConnections в узле WSMan:\<ComputerName>\Service,
— Вы можете защитить локальный компьютер с помощью параметров MaximumReceivedDataSizePerCommand и MaximumReceivedObjectSize командлета New-PSSessionOption и привилегированной переменной $PSSessionOption.
— Вы можете защитить удаленный компьютер, добавив ограничения на конфигурацию сеанса, используя параметры MaximumReceivedDataSizePerCommandMB и MaximumReceivedObjectSizeMB командлета Register-PSSessionConfiguration.
Когда квоты конфликтуют с командой, Windows PowerShell создаёт ошибку.
Для устранения этой ошибки, надо изменить удаленную команду для удовлетворения квоты. Или определить источник квоты, а затем увеличить квоту, чтобы команда могла закончиться.
Например, следующая команда увеличивает квоту на размер объектов в конфигурации сеанса Microsoft.PowerShell на удаленном компьютере с 10 МБ (значение по умолчанию) до 11 МБ.
Set-PSSessionConfiguration -Name microsoft.PowerShell -MaximumReceivedObjectSizeMB 11 -Force
Set-PSSessionConfiguration -Name microsoft.PowerShell -MaximumReceivedObjectSizeMB 11 -Force |
Для получения более подробной информации о командлете New-PSSessionOption см New-PSSessionOption.
Для получения более подробной информации о квотах WS-Management, можно посмотреть раздел справки для WS-Management провайдера («Get-Help WS-Management»).
Как решить ошибки тайм-аута
ОШИБКА: Служба WS-Management не может завершить операцию в течение времени, указанного в OperationTimeout.
ERROR: The WS-Management service cannot complete the operation within the time specified in OperationTimeout.
Вы можете использовать тайм-ауты, чтобы защитить локальный компьютер и удаленный компьютер от чрезмерного использования ресурсов, как случайного, так и злонамеренного. Когда тайм-ауты установлены на локальном и удаленном компьютере, Windows PowerShell использует самое короткое время ожидания.
Следующие тайм-ауты доступны в базовой конфигурации.
— Провайдер WSMan (WSMan:) предоставляет на стороны клиента и сервера несколько параметров тайм-аута, такие как настройка MaxTimeoutms в узле WSMan:\<ComputerName> и настройки EnumerationTimeoutms и MaxPacketRetrievalTimeSeconds в узле WSMan:\<ComputerName>\Service.
-Можно защитить локальный компьютер с помощью параметров CancelTimeout, IdleTimeout, OpenTimeout и OperationTimeout командлета New-PSSessionOption и привилегированной переменной $PSSessionOption.
— Также можно защитить удаленный компьютер, установив значения тайм-аутов для сессии программно в конфигурации сессии.
Когда значение тайм-аута не разрешает завершить операцию, Windows PowerShell прерывает операцию и генерирует сообщение об ошибке.
Для устранения этой ошибки, надо изменить удаленную команду для удовлетворения квоты. Или определить источник квоты, а затем увеличить квоту, чтобы команда могла закончиться.
Например, следующие команды используют командлет New-PSSessionOption для создания объекта параметра сеанса со значением OperationTimeout в 4 минуты (240000 MS), а затем используют объект параметра сеанса, чтобы создать удаленный сеанс.
C:\PS> $pso = New-PSSessionoption -OperationTimeout 240000 C:\PS> New-PSSession -ComputerName Server01 -sessionOption $pso
C:\PS> $pso = New-PSSessionoption -OperationTimeout 240000 C:\PS> New-PSSession -ComputerName Server01 -sessionOption $pso |
Для получения более подробной информации о тайм-аутах WS-Management, можно посмотреть раздел справки для поставщика WS-Management (например «Get-Help WSMan»).
Для получения более подробной информации о командлете New-PSSessionOption см New-PSSessionOption.
Поведение при зависания, поиск и исправление неисправностей
В этом разделе обсуждаются проблемы удаленного взаимодействия, которые мешают командам выполнятся или не допускают или задерживают вывод строк в Windows PowerShell.
Как прервать команду
Некоторые программы Windows, такие как программы с пользовательским интерфейсом, консольные приложения, которые выводят подсказки и консольные приложения, использующие интерфейс Win32 API, не корректно работают в удаленном хосте Windows PowerShell.
При использовании этих программ, можно столкнуться с неожиданным поведением. Например, отсутствием вывода, частичной работой, или удаленная сессия которая не завершается.
Для завершения работы зависшей программы, нажмите CTRL + C. Для просмотра ошибок, которые возможно выводились, введите «$error» в локальном хосте и удаленном сеансе.
Как восстановиться после сбоя операции
ОШИБКА: Операция ввода/вывода была прервана из-за разрыва соединения или по запросу от приложения.
ERROR: The I/O operation has been aborted because of either a thread exit or an application request.
Эта ошибка возвращается, когда операция прерывается, до ее завершения. Как правило, это происходит, когда служба WinRM останавливается или перезапускается, а другие операции WinRM остаются в работе.
Чтобы решить эту проблему, убедитесь, что служба WinRM запущена и повторите команду.
1. Запустите Windows PowerShell с параметром «Запуск от имени администратора».
2. Выполните следующую команду:
3. Повторно запустите команду, которая генерировала ошибку.
СМОТРИТЕ ТАКЖЕ
about_Remote
about_Remote_Requirements
about_Remote_Variables
powershell — Невозможно создать удаленный сеанс powershell после Enable-PSRemoting
Я не могу подключиться ни к одной машине, чтобы спасти мою жизнь! Я перепробовал все, что смог найти. Если бы кто-то мог устранить неполадки или направить меня, я был бы признателен, так как это было бы отличным инструментом для добавления в мой домен.
НАСТРОИТЬ:
- Клиентский компьютер внутри домена
- Сервер машина внутри или вне домена — Виртуализировано и используется для WSUS Computername: wsustest
- КЛИЕНТ СЕРВЕР МАШИНА физическое- компьютерное имя: epizzi-pc
ШАГИ:
enable-pssremoting сделано! на всех машинах доверенные хосты, настроенные с * или добавленные клиентские машины Брандмауэры с открытым профилем на всякий случай
Enter-PSSession -ComputerName wsustest -Credential wsustest\administrator Enter-PSSession -ComputerName epizzi-pc -Credential epizzi-pc\administratorrador Enter-PSSession: не удалось подключиться к удаленному серверу epizzi-pc со следующим: сообщение об ошибке: WinRM не может обработать запрос. При использовании аутентификации Kerberos произошла следующая ошибка с кодом ошибки 0x80090311 В настоящее время отсутствуют серверы входа, которые могли бы обслуживать запрос на вход. Возможные причины: -Указанное имя пользователя или пароль недействительны . -Kerberos используется, когда не указан метод аутентификации и имя пользователя . -Kerberos принимает доменные имена пользователей, но не локальные имена пользователей . - Имя участника-службы (SPN) для имени и порта удаленного компьютера не существует . -Клиентские и удаленные компьютеры находятся в разных доменах, и нет доверия между двумя доменами . После проверки вышеуказанных проблем попробуйте следующее: - Проверьте Event Viewer для событий, связанных с аутентификацией . -Измените метод аутентификации; добавьте конечный компьютер к параметру конфигурации WinRM TrustedHosts или используйте транспорт HTTPS . Обратите внимание, что компьютеры в списке TrustedHosts могут не проходить проверку подлинности . -Для получения дополнительной информации о конфигурации WinRM выполните следующую команду: winrm help config. Для получения дополнительной информации см. Раздел справки about_Remote_Trou фондовой справки . В строке: 1 символ: 1 + Enter-PSSession -ComputerName epizzi-pc -Credential epizzi-pc\administratorrador + ~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~ + CategoryInfo: InvalidArgument: (epizzi-pc: String) [Enter-PSSession], PSRemotingTransportException + FullyQualifiedErrorId: CreateRemoteRunspaceFailed
Enter-PSSession -ComputerName wsustest -UseSSL -Credential wsustest\administrator * Enter-PSSession: Ошибка подключения к удаленному серверу wsustest со следующим сообщением об ошибке: WinRM не может завершить операцию. Убедитесь, что указано имя компьютера Valid, что компьютер доступен по сети и что исключение брандмауэра для службы WinRM включено и разрешает доступ с этого компьютера. По умолчанию исключение брандмауэра WinRM Для общедоступных профилей ограничивает доступ к удаленным компьютерам в одной локальной подсети. Для получения дополнительной информации см. Раздел справки about_Remote_Trou фондовой справки . В строке: 1 символ: 1 + Enter-PSSession -ComputerName wsustest -UseSSL -Credential wsustest\administratorrato ... + ~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: InvalidArgument: (wsustest: String) [Enter-PSSession], PSRemotingTransportException + FullyQualifiedErrorId: CreateRemoteRunspaceFailed * ОШИБКИ:
powershell-remoting — Как запустить удаленные сценарии PowerShell? Enable-PSRemoting не работает
Мы оба находимся в одном домене, и я включил PSRemoting на обеих машинах, но по какой-то причине мои удаленные сценарии не запускаются. Политика выполнения не ограничена, но вот сообщения, которые я получаю:
Get-Process : Couldn't connect to remote machine. At line:1 char:1 + Get-Process -ComputerName 10.xxx.xx.xx + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Get-Process], InvalidOperationException + FullyQualifiedErrorId : System.InvalidOperationException,Microsoft.PowerShell.Commands.GetProcessCommand Get-EventLog : The network path was not found. At line:1 char:1 + Get-EventLog -LogName Application -ComputerName 10.xxx.xx.xx + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Get-EventLog], IOException + FullyQualifiedErrorId : System.IO.IOException,Microsoft.PowerShell.Commands.GetEventLogCommand
Я использую PSVersion 5.1 и PSRemotingProtocolVersion 2.3 на обеих машинах, есть ли у кого-нибудь предложения?
После дополнительных исследований я включил удаленное управление сервером (WinRM) и разрешил удаленный доступ к PowerShell на обеих машинах, и он по-прежнему выдает мне те же сообщения об ошибках, указанные выше для этих базовых командлетов выше, НО это позволит мне войти в сеанс на удаленном компьютере, используя Enter-PSSession
. Я здесь в растерянности, потому что обходной путь приличный, но в идеале я бы хотел запускать скрипты удаленно.
0
Officer_Narc 7 Дек 2018 в 03:28
1 ответ
Лучший ответ
Если вы можете использовать Enter-PSSession
, тогда PSRemoting работает нормально. Однако ни Get-Process
, ни Get-EventLog
в первую очередь не используют PSRemoting для удаленных подключений. Вы можете проверить это, проверив сетевой трафик с помощью таких инструментов, как Wireshark или WinDump. Для работы командлетов необходим доступ к портам 139 / tcp (сеанс NetBIOS) и 445 / tcp (DirectSMB) на удаленном хосте. Эти порты, вероятно, заблокированы в брандмауэре Windows на удаленном хосте, поэтому вам нужно изменить это, чтобы разрешить удаленные подключения к этому хосту.
Если вы хотите использовать PSRemoting, вам необходимо вызвать командлеты локально на удаленном хосте через Invoke-Command
:
Invoke-Command -Computer 10.x.x.x -ScriptBlock {
Get-Process
Get-EventLog -LogName Application
}
0
Ansgar Wiechers 7 Дек 2018 в 09:51
Enable-PSRemoting (Microsoft.PowerShell.Core) — PowerShell | Документы Microsoft
Настраивает компьютер для получения удаленных команд.
В этой статье
Синтаксис
Включить-PS
[-Сила]
[-SkipNetworkProfileCheck]
[-Что, если]
[-Подтверждать]
[<Общие параметры>]
Описание
Этот командлет доступен только на платформе Windows.
Командлет Enable-PSRemoting
настраивает компьютер для получения удаленных команд PowerShell, которые
отправляются с использованием технологии WS-Management.Удаленное взаимодействие PowerShell на основе WS-Management в настоящее время
поддерживается только на платформе Windows.
PowerShell включено по умолчанию на платформах Windows Server. Вы можете использовать Enable-PSRemoting
для включения удаленного взаимодействия PowerShell в других поддерживаемых версиях Windows и
повторно включите удаленное взаимодействие, если оно станет отключенным.
Эту команду нужно запускать только один раз на каждом компьютере, который будет получать команды. Ты не делай нужно запускать его на компьютерах, которые только отправляют команды.Поскольку конфигурация запускает слушателей для принимать удаленные подключения, разумно запускать его только там, где это необходимо.
Включение удаленного взаимодействия PowerShell в клиентских версиях Windows, когда компьютер находится в общедоступной сети обычно не разрешается, но вы можете пропустить это ограничение с помощью SkipNetworkProfileCheck параметр. Дополнительные сведения см. В описании параметра SkipNetworkProfileCheck .
Несколько установок PowerShell могут существовать бок о бок на одном компьютере.Бег Enable-PSRemoting
настроит конечную точку удаленного взаимодействия для конкретной версии установки, которая
вы запускаете командлет в. Итак, если вы запустите Enable-PSRemoting
во время работы PowerShell 6.2,
будет настроена конечная точка удаленного взаимодействия, на которой работает PowerShell 6.2. Если вы запустите Enable-PSRemoting
, пока
при запуске PowerShell 7-preview будет настроена конечная точка удаленного взаимодействия, которая запускает PowerShell 7-preview.
Enable-PSRemoting
при необходимости создает две конфигурации удаленной конечной точки.Если конечная точка
конфигурации уже существуют, тогда их просто нужно включить. Созданные конфигурации
идентичны, но имеют разные названия. У одного будет простое имя, соответствующее PowerShell.
версия, в которой размещен сеанс. Другое имя конфигурации содержит более подробную информацию
о версии PowerShell, в которой размещен сеанс. Например, при запуске Enable-PSRemoting
в PowerShell 6.2 вы получите две настроенные конечные точки с именем PowerShell.6 , PowerShell. 6.2.2 .
Это позволяет вам создать соединение с последней версией хоста PowerShell 6 с помощью простого
имя PowerShell.6 . Или вы можете подключиться к определенной версии хоста PowerShell, используя более длинный
имя PowerShell.6.2.2 .
Чтобы использовать недавно включенные конечные точки удаленного взаимодействия, необходимо указать их по имени с ConfigurationName параметр при создании удаленного подключения с помощью Invoke-Command
, New-PSSession
, Enter-PSSession
командлеты.Для получения дополнительной информации см. Пример 4.
Командлет Enable-PSRemoting
выполняет следующие операции:
- Запускает командлет Set-WSManQuickConfig,
который выполняет следующие задачи:
- Запускает службу WinRM.
- Задает автоматический тип запуска службы WinRM.
- Создает слушателя для приема запросов с любого IP-адреса.
- Включает исключение брандмауэра для связи WS-Management.
- При необходимости создает конфигурации конечных точек сеанса с простыми и длинными именами.
- Включает все конфигурации сеанса.
- Изменяет дескриптор безопасности всех конфигураций сеанса, чтобы разрешить удаленный доступ.
- Перезапускает службу WinRM, чтобы предыдущие изменения вступили в силу.
Чтобы запустить этот командлет на платформе Windows, запустите PowerShell с помощью команды Запуск от имени администратора. вариант. Этот командлет недоступен в версиях PowerShell для Linux или MacOS.
Осторожно
Этот командлет не влияет на конфигурации удаленных конечных точек, созданные Windows PowerShell.Это влияет только на конечные точки, созданные с помощью PowerShell версии 6 и выше. Чтобы включить и
отключите конечные точки удаленного взаимодействия PowerShell, размещенные в Windows PowerShell, запустите Enable-PSRemoting
командлет из сеанса Windows PowerShell.
Примеры
Пример 1: Настройка компьютера для получения удаленных команд
Эта команда настраивает компьютер на получение удаленных команд.
Включить-PS
ПРЕДУПРЕЖДЕНИЕ. Удаленное взаимодействие PowerShell включено только для конфигураций PowerShell Core и не работает.
влияют на конфигурации удаленного взаимодействия Windows PowerShell.Запустите этот командлет в Windows PowerShell, чтобы повлиять на
все конфигурации удаленного взаимодействия PowerShell.
Пример 2: Настройте компьютер для получения удаленных команд без запроса подтверждения
Эта команда настраивает компьютер на получение удаленных команд. Параметр Force подавляет запросы пользователя.
Включить-PSRemoting -Force
ПРЕДУПРЕЖДЕНИЕ. Удаленное взаимодействие PowerShell включено только для конфигураций PowerShell Core и не работает.
влияют на конфигурации удаленного взаимодействия Windows PowerShell.Запустите этот командлет в Windows PowerShell, чтобы повлиять на
все конфигурации удаленного взаимодействия PowerShell.
Пример 3: Разрешить удаленный доступ клиентам
В этом примере показано, как разрешить удаленный доступ из общедоступных сетей в клиентских версиях Windows.
операционная система. Название правила брандмауэра может быть разным для разных версий Windows.
Используйте Get-NetFirewallRule
, чтобы просмотреть список правил. Перед включением правила брандмауэра просмотрите
параметры безопасности в правиле, чтобы убедиться, что конфигурация подходит для вашей среды.
Get-NetFirewallRule -Name 'WINRM *' | Выбрать имя объекта
Имя
----
WINRM-HTTP-в-TCP-NoScope
WINRM-HTTP-в-TCP
WINRM-HTTP-Compat-In-TCP-NoScope
WINRM-HTTP-Compat-In-TCP
Включить-PSRemoting -SkipNetworkProfileCheck -Force
Set-NetFirewallRule -Name 'WINRM-HTTP-In-TCP' -RemoteAddress Any
По умолчанию Enable-PSRemoting
создает сетевые правила, разрешающие удаленный доступ из частных и
доменные сети. Команда использует параметр SkipNetworkProfileCheck , чтобы разрешить удаленный доступ.
из общедоступных сетей в той же локальной подсети.Команда указывает параметр Force для
подавить подтверждающие сообщения.
Параметр SkipNetworkProfileCheck не влияет на серверные версии операционной системы Windows. system, которые по умолчанию разрешают удаленный доступ из общедоступных сетей в той же локальной подсети.
Командлет Set-NetFirewallRule
в модуле NetSecurity добавляет правило межсетевого экрана, которое позволяет
удаленный доступ из общедоступных сетей из любого удаленного места. Сюда входят места в разных
подсети.
Пример 4: Создание удаленного сеанса для недавно включенной конфигурации конечной точки
В этом примере показано, как включить удаленное взаимодействие PowerShell на компьютере, найти настроенную конечную точку. имена и создайте удаленный сеанс с одной из конечных точек.
Первая команда включает удаленное взаимодействие PowerShell на компьютере.
Вторая команда выводит список конфигураций конечных точек.
Третья команда создает удаленный сеанс PowerShell на том же компьютере с указанием PowerShell.6 конечная точка по имени. Удаленный сеанс будет размещен с использованием последней версии PowerShell 6. версия (6.2.2).
Последняя команда обращается к переменной $ PSVersionTable
в удаленном сеансе для отображения
Версия PowerShell, в которой размещен сеанс.
Включить-PSRemoting -Force
Get-PSSessionConfiguration
$ session = New-PSSession -ComputerName localhost -ConfigurationName PowerShell.6
Invoke-Command -Session $ session -ScriptBlock {$ PSVersionTable}
ПРЕДУПРЕЖДЕНИЕ. Удаленное взаимодействие PowerShell включено только для конфигураций PowerShell Core и не работает.
влияют на конфигурации удаленного взаимодействия Windows PowerShell.Запустите этот командлет в Windows PowerShell, чтобы повлиять на
все конфигурации удаленного взаимодействия PowerShell.
Имя: PowerShell.6
PS Версия: 6.2
StartupScript:
RunAsUser:
Разрешение: NT AUTHORITY \ INTERACTIVE AccessAllowed, BUILTIN \ Administrators AccessAllowed,
BUILTIN \ Доступ пользователей удаленного управления разрешен
Имя: PowerShell.6.2.2
PS Версия: 6.2
StartupScript:
RunAsUser:
Разрешение: NT AUTHORITY \ INTERACTIVE AccessAllowed, BUILTIN \ Administrators AccessAllowed,
BUILTIN \ Доступ пользователей удаленного управления разрешен
Имя Значение
---- -----
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0…}
Ядро PSEdition
PSRemotingProtocolВерсия 2.3
Платформа Win32NT
Сериализация Версия 1.1.0.1
GitCommitId 6.2.2
WSManStackVersion 3.0
PS Версия 6.2.2
ОС Microsoft Windows 10.0.18363
Примечание
Название правила брандмауэра может отличаться в зависимости от версии Windows. Использовать Get-NetFirewallRule
, чтобы вывести список имен правил в вашей системе.
Параметры
-Подтвердить
Запрашивает подтверждение перед запуском командлета.
Тип: | SwitchParameter | |||||
Псевдонимы: | cf | |||||
Позиция: | Именованный | |||||
Значение по умолчанию: | Ложь | 9018 | 9018 | Принимать подстановочные знаки: | Ложь |
-Force
Принудительно запускает команду без запроса подтверждения пользователя.
Тип: | SwitchParameter | |||
Позиция: | Именованный | |||
Значение по умолчанию: | Нет | |||
Принять ввод конвейера: | Ложный | Ложный подстановочный знак |
-SkipNetworkProfileCheck
Указывает, что этот командлет включает удаленное взаимодействие в клиентских версиях операционной системы Windows, когда компьютер находится в общедоступной сети.Этот параметр включает правило брандмауэра для общедоступных сетей, разрешает удаленный доступ только с компьютеров в той же локальной подсети.
Этот параметр не влияет на серверные версии операционной системы Windows, которые по умолчанию
иметь правило брандмауэра локальной подсети для общедоступных сетей. Если правило брандмауэра локальной подсети отключено
в серверной версии Enable-PSRemoting
повторно включает его, независимо от значения этого параметра.
Для снятия ограничения локальной подсети и включения удаленного доступа из всех мест в общедоступном
сетей используйте командлет Set-NetFirewallRule
в модуле NetSecurity .
Этот параметр появился в PowerShell 3.0.
Тип: | SwitchParameter | |||
Позиция: | Именованный | |||
Значение по умолчанию: | Нет | |||
Принять ввод конвейера: | Ложный | Ложный подстановочный знак |
-WhatIf
Показывает, что произойдет, если командлет будет запущен. Командлет не запущен.
Тип: | SwitchParameter |
Псевдонимы: | wi |
Позиция: | Названный |
Значение по умолчанию: | Ложный | 9018 9018 | 9018 | Принимать подстановочные знаки: | Ложь |
Входы
Нет
Вы не можете передать ввод по конвейеру этому командлету.
Выходы
Строка
Этот командлет возвращает строки, описывающие его результаты.
Банкноты
Этот командлет доступен только на платформах Windows.
В серверных версиях операционной системы Windows Enable-PSRemoting
создает правила брандмауэра для
частные и доменные сети, которые разрешают удаленный доступ, и создает правило брандмауэра для общедоступных
сети, которые разрешают удаленный доступ только с компьютеров в той же локальной подсети.
В клиентских версиях операционной системы Windows Enable-PSRemoting
создает правила брандмауэра для
частные и доменные сети, обеспечивающие неограниченный удаленный доступ. Чтобы создать правило брандмауэра для
общедоступные сети, которые позволяют удаленный доступ из той же локальной подсети, используйте Параметр SkipNetworkProfileCheck .
В клиентских или серверных версиях операционной системы Windows для создания правила брандмауэра для общедоступных
сетей, которые снимают ограничение локальной подсети и разрешают удаленный доступ, используйте Set-NetFirewallRule
командлет в модуле NetSecurity для выполнения следующей команды: Set-NetFirewallRule -Name "WINRM-HTTP-In-TCP-PUBLIC" -RemoteAddress Any
Enable-PSRemoting
включает все конфигурации сеанса, задав значение Enabled свойство всех конфигураций сеанса на $ True
.
Enable-PSRemoting
удаляет настройки Deny_All и Network_Deny_All . Это обеспечивает удаленное
доступ к конфигурациям сеанса, зарезервированным для локального использования.
Структура SwitchParameter (System.Management.Automation) | Документы Microsoft
Определение
Важный
Некоторая информация относится к предварительному выпуску продукта, который может быть существенно изменен перед выпуском. Microsoft не дает никаких гарантий, явных или подразумеваемых, в отношении информации, представленной здесь.
Тип, используемый для определения параметра в сценарии командлета функции, которая может использоваться только как переключатель.
В этой статье
Параметр SwitchParameter класса общедоступных значений
общедоступная структура SwitchParameter
тип SwitchParameter = struct
Переключатель общественных зданий Параметр
- Наследование
Конструкторы
Характеристики
Настоящее | Возвращает истину, если параметр был указан в командной строке, в противном случае — ложь. |
Подарок | Статический метод, который возвращает экземпляр SwitchParameter, указывающий на его присутствие. |
Методы
Равно (объект) | Сравните этот параметр переключателя с другим объектом. |
GetHashCode () | Возвращает хэш-код для этого параметра переключателя. |
ToBool () | Явный метод преобразования SwitchParameter в логическое значение. |
Нанизывать() | Возвращает строковое представление для этого объекта |
Операторы
Относится к
Включить удаленное взаимодействие PowerShell | 4sysops
Если вы хотите управлять компьютерами Windows удаленно с помощью PowerShell, сначала необходимо включить удаленное взаимодействие PowerShell на удаленном компьютере.Затем вы можете использовать командлеты Invoke-Command и Enter-PSsession для выполнения команд PowerShell на удаленном компьютере. Команды, описанные в этой статье, также работают в PowerShell 6 и PowerShell 7.
Майкл Пьетрофорте — основатель и главный редактор 4sysops. Он имеет более чем 35-летний опыт работы в области управления ИТ и системного администрирования.Последние сообщения Майкла Пьетрофорте (просмотреть все)
Обратите внимание, что эта статья заменяет несколько небольших вики-документов одним исчерпывающим текстом и охватывает все возможные способы и параметры для включения удаленного взаимодействия PowerShell.
Чтобы включить удаленное взаимодействие PowerShell на отдельном компьютере, вы можете войти на этот компьютер локально или через удаленный рабочий стол, а затем выполнить Enable-PSRemoting в командной строке PowerShell с правами администратора.
Чтобы избежать запросов подтверждения, вы можете использовать параметр -Force :
Enable-PSRemoting -Force
Если текущий тип подключения компьютера установлен как общедоступный, указанная выше команда выдаст сообщение об ошибке, поскольку по умолчанию PowerShell удаленное взаимодействие доступно только для частных и доменных типов подключения.
Удаленное взаимодействие PowerShell лучше всего работает в среде Active Directory. Если вы хотите включить удаленное взаимодействие для рабочих групп или автономных компьютеров, вам необходимо рассмотреть еще несколько параметров.
Если у вас установлен общедоступный тип сетевого подключения, необходимо использовать параметр ‑SkipNetworkProfileCheck , как описано выше.
Enable-PSRemoting -Force -SkipNetworkProfileCheck
Аутентификация в удаленном взаимодействии PowerShell зависит от Active Directory. По умолчанию только компьютеры, являющиеся членами домена, могут подключаться через удаленное взаимодействие PowerShell.В среде рабочей группы вам необходимо вручную добавить IP-адреса компьютеров в список TrustedHosts:
Set-Item WSMan: \ localhost \ Client \ TrustedHosts -Value "10.0.2.33" -Force
Также необходимо убедиться, что что брандмауэр Windows открыт для удаленного управления Windows на удаленном компьютере. На удаленном компьютере введите «брандмауэр» после нажатия Пуск и нажмите Дополнительные параметры в приложении брандмауэра панели управления. Щелкните правой кнопкой мыши Входящие правила и выберите Новое правило .
По умолчанию только администраторы могут подключаться через удаленное взаимодействие PowerShell. Если вы хотите включить удаленное взаимодействие PowerShell для одного пользователя, не являющегося администратором, вы можете добавить учетную запись пользователя в локальную группу «Пользователи удаленного управления» .
Обратите внимание, что группа «Пользователи удаленного управления» существует только на компьютерах под управлением Windows 8 (или Windows Server 2012) и выше.
Чтобы разрешить нескольким администраторам работать с удаленным взаимодействием PowerShell, вы можете создать новую группу Active Directory (возможно, «PowerShell Remoting») и добавить в эту группу соответствующих пользователей домена.Затем добавьте эту новую группу домена в локальную группу пользователей удаленного управления на всех машинах, на которых вы хотите разрешить удаленное взаимодействие PowerShell для этих пользователей с помощью групп с ограничениями групповой политики:
Конфигурация компьютера> Политики> Параметры безопасности> Группы с ограниченным доступом
Добавление новой группы домена в локальную группу пользователей удаленного управления
Обратите внимание, что эта процедура дает стандартным пользователям только право подключаться через удаленное взаимодействие PowerShell.
Чтобы включить удаленное взаимодействие PowerShell на нескольких компьютерах, вы можете использовать групповую политику. Релевантны три политики:
Включить службу WinRM
Конфигурация компьютера> Политики> Административные шаблоны> Компоненты Windows> Удаленное управление Windows (WinRM)> Служба WinRM> Разрешить удаленное управление сервером через WinRM
Вы должны включить эту политику и установите фильтры IPv4 / IPv6 на все (*).
Разрешить удаленное управление сервером через WinRM
Установить для службы WS-Management автоматический запуск
Конфигурация компьютера> Политики> Параметры Windows> Параметры безопасности> Системные службы> Удаленное управление Windows (WS-Management)
Вам необходимо установите автоматический режим запуска службы WS-Management.
Установить автоматический запуск службы WS Management
Разрешить удаленное управление Windows в брандмауэре
Перейдите в следующую папку в консоли управления групповой политикой (GPMC), щелкните правой кнопкой мыши Правила для входящих подключений и выберите Новое правило .
Конфигурация компьютера> Политики> Параметры Windows> Параметры безопасности> Брандмауэр Windows с повышенной безопасностью
В поле Predefined выберите Удаленное управление Windows и затем следуйте инструкциям мастера, чтобы добавить новое правило брандмауэра.
Чтобы включить PowerShell удаленно на отдельном компьютере, вы можете использовать бесплатный инструмент удаленного управления Microsoft PsExec. Этот параметр помогает, если удаленный рабочий стол не включен на удаленном компьютере.
Однако PsExec требует, чтобы порты для общего доступа к файлам и принтерам или удаленного администрирования были открыты в брандмауэре Windows. Эти порты можно открыть с помощью групповой политики: Конфигурация компьютера> Административные шаблоны> Сеть> Сетевые подключения> Брандмауэр Windows> Профиль домена .
Необходимо включить Разрешить исключение общего доступа к входящим файлам и принтерам или Разрешить исключение входящего удаленного администрирования .
Разрешить общий доступ к файлам и принтерам в брандмауэре Windows с помощью групповой политики
Кроме того, вы также можете настроить брандмауэр Windows через Конфигурация компьютера> Параметры Windows> Безопасность> Брандмауэр Windows с повышенной безопасностью .
Чтобы включить удаленное взаимодействие PowerShell с PsExec, откройте командную строку с правами администратора в папке, в которую вы скопировали PsExec, и затем выполните эту команду:
psexec.Чтобы проверить, правильно ли вы включили удаленное взаимодействие PowerShell, вы можете ввести эту команду
Enter-PSSession -ComputerNameЭто откроет интерактивный сеанс с удаленным компьютером, где вы затем сможете ввести команды PowerShell для выполнения на удаленном компьютере. машина.
Тестирование удаленного взаимодействия PowerShell
Если вы хотите подключиться к учетной записи, отличной от той, с которой вы вошли на локальный компьютер, вы можете использовать эту команду:
Enter-PSSession -Computername "host" –Credential "host \ administrator"Если вам больше не требуется удаленное взаимодействие PowerShell на конкретном компьютере, следует отключить удаленное взаимодействие по соображениям безопасности.
В PowerShell Core 6 вы можете работать с удаленным взаимодействием PowerShell через SSH вместо WinRM / HTTP. Пошаговое руководство, приведенное ниже, взято из этого сообщения в блоге, в котором есть более подробная информация.
- Загрузите MSI-файл PowerShell 6 Core и установите его на свой компьютер с Windows. Это простая установка "следующий-следующий". Обратите внимание, что здесь я работаю с PowerShell 6.0, потому что на момент написания этой статьи версия 6.1 все еще находится в стадии предварительной версии.
- Загрузите OpenSSH для Windows. Я работал с 64-битной версией этого руководства.
- Извлеките файл OpenSSH-Win64.zip и скопируйте OpenSSH-Win64 в C: \ Program Files \ (32-разрядная версия тоже подойдет).
- Переименуйте OpenSSH-Win64 в OpenSSH.
- Выполните команду ниже, чтобы установить OpenSSH:
powershell.exe -ExecutionPolicy Bypass -File "C: \ Program Files \ OpenSSH \ install-sshd.ps1"- Затем мы добавим расположение OpenSSH в среду PATH переменная, чтобы операционная система находила исполняемые файлы OpenSSH. В консоли PowerShell вы можете выполнить следующие команды:
$ env: Path = "$ env: Path; C: \ Program Files \ OpenSSH \" Set-ItemProperty -Path 'Registry :: HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Control \ Session Manager \ Environment' -Name PATH -Value $ env: PathУстановка OpenSSH
- Теперь мы можем запустить службу SSH (sshd) с этим Команда PowerShell:
Start-Service sshd- Для автоматического запуска службы sshd OpenSSH вам потребуется следующая команда:
Set-Service sshd -StartupType Automatic- Запустить Блокнот от имени администратора (щелкните правой кнопкой мыши и выберите Запуск от имени администратора ) и откройте sshd_config в C: \ ProgramData \ SSH \ (измените тип файла на *.*, иначе вы увидите только файлы .txt). Обратите внимание, что папка ProgramData скрыта, и поэтому вы увидите файл только в том случае, если вы включили Скрытые элементы в представлении проводника.
- Закомментируйте эту строку в sshd_config «Subsystem sftp sftp-server.exe» и добавьте вместо нее:
Subsystem powershell c: / program files / powershell / 6.0.2 / pwsh.exe -sshs -NoLogo -NoProfileEditing sshd config
Обратите внимание, что путь может отличаться, если вы работаете с другой версией PowerShell Core.
- Чтобы разрешить удаленные подключения в брандмауэре Windows, необходимо открыть порт SSH (22). В консоли Windows PowerShell это можно сделать с помощью следующей команды:
New-NetFirewallRule -DisplayName 'SSH Inbound' -Profile @ ('Domain', 'Private', 'Public') -Direction Inbound -Action Allow -Protocol TCP ‑LocalPort 22Обратите внимание, что эта команда не работает в PowerShell Core 6.0.
Открытие порта SSH в брандмауэре Windows
Это открывает порт SSH для всех трех сетевых профилей (Домен, Частный, Общедоступный).В зависимости от вашей среды вы можете захотеть открыть порт 22 только для одного из профилей.
- Теперь вам необходимо перезагрузить компьютер, чтобы убедиться, что переменная среды PATH доступна для всей системы
Для подключения к удаленному хосту у вас есть для использования параметра HostName вместо параметра ComputerName:
Подпишитесь на рассылку новостей 4sysops!
Enter-PSsession -HostName <имя компьютера>В сообщении блога вы найдете более подробную информацию о различных способах подключения через SSH.Преимущество удаленного взаимодействия PowerShell через SSH заключается в том, что вы можете работать с аутентификацией с открытым ключом.
+7
Enable-PSRemoting - PowerShell - SS64.com
Enable-PSRemoting - PowerShell - SS64.comНастройте компьютер для получения удаленных команд. Запускайте команды PowerShell на удаленных компьютерах.
Синтаксис Enable-PSRemoting [-Force] [-SkipNetworkProfileCheck] [-Confirm] [-WhatIf] [ CommonParameters ] Ключ: -Сила Подавить все запросы пользователя.По умолчанию вам предлагается подтвердить каждую операцию. -SkipNetworkProfileCheck Включите удаленное взаимодействие в клиентских версиях Windows, когда компьютер находится в общедоступной сети. Этот параметр включает правило брандмауэра для общедоступных сетей, разрешающее удаленный доступ только из компьютеры в одной локальной подсети. Этот параметр не влияет на серверные версии Windows, которые по умолчанию имеют правило брандмауэра локальной подсети для общедоступных сетей.Если правило брандмауэра локальной подсети отключено на серверная версия Windows, Enable-PSRemoting повторно включает ее, независимо от значения этого параметра. Чтобы снять ограничение локальной подсети и разрешить удаленный доступ из всех мест в общедоступных сетях, используйте командлет Set-NetFirewallRule в модуле NetSecurity. (PowerShell 3.0+) -подтверждать Запросить подтверждение перед выполнением команды. -что, если Опишите команду, не выполняя ее.Enable-PSRemoting настраивает компьютер для получения удаленных команд PowerShell, отправленных с помощью технологии WS-Management.
Чтобы запустить этот командлет, запустите PowerShell с параметром «Запуск от имени администратора».
PS Удаленное взаимодействие необходимо активировать только один раз на каждом компьютере, который будет получать команд.
Компьютеры, которые только отправляют команд, не нуждаются в включенном удаленном удалении PS; поскольку конфигурация активирует прослушиватели (и запускает службу WinRM), разумно запускать ее только там, где это необходимо.Чтобы запустить команду в удаленной системе, используйте Invoke-Command или Enter-PSSession для нескольких команд.
Если ваши компьютеры не принадлежат к домену , вам необходимо выполнить следующие дополнительные действия:
На обоих компьютерах:Настройте параметр TrustedHosts, чтобы компьютеры доверяли друг другу:
Set-Item WSMan: \ localhost \ client \ trusthosts PC64, PC65, PC66
Список, разделенный запятыми, может содержать IP-адреса или имена компьютеров или даже подстановочный знак * для соответствия всем.запуск: Restart-Service WinRM
Для просмотра текущих доверенных хостов:
Получить элемент WSMan: \ localhost \ Client \ TrustedHostsПримеры
Настроить локальный компьютер для получения удаленных команд:
PS C: \> Включить-PSRemoting
Настройте компьютер для получения удаленных команд и подавления запросов пользователя:
PS C: \> Включить-PSRemoting -Force
Настройте удаленный компьютер workstation64 для получения удаленных команд через psexec.Если вы запускаете это из учетной записи, которая НЕ является администратором домена, укажите имя пользователя / пароль учетной записи с правами администратора на удаленном компьютере:
PS C: \> psexec \\ PC64 -u adminUser64 -p pa $$ w0rd -h -d powershell.exe "enable-psremoting -force"Проверьте, что компьютер computer64 настроен для приема удаленных команд:
PS C: \> Тест-WsMan PC64
Выполните одну команду на удаленном компьютере с помощью Invoke-Command:
PS C: \> Invoke-Command -ComputerName PC64 -ScriptBlock {Get-ChildItem C: \} -credential jdoeВыполнить несколько команд, запустив удаленный сеанс PowerShell:
PS C: \> Enter-PSSession -ComputerName PC64 -Credential AshleyT
«Тот, кто скрывается в отдаленных местах, сам себе закон» ~ Публилий Сир
Связанные командлеты PowerShell:
How-To: запустить сценарий PowerShell на удаленном компьютере.
Enter-PSSession - запуск интерактивного сеанса с удаленным компьютером.
Disable-PSRemoting - запретить удаленным пользователям запускать команды на локальном компьютере.
Test-WSMan - проверьте, настроен ли компьютер для получения удаленных команд через службу WinRM.
Invoke-Command - запускать команды на локальном и удаленном компьютерах.
WINRM - удаленное управление Windows.
Авторские права © 1999-2021 SS64.com
Некоторые права защищены.Включите PSRemoting через Powershell, чтобы использовать функции удаленного взаимодействия!
PowerShell Remoting - это функция PowerShell, которая позволяет системному администратору запускать команды в удаленных системах.
Он построен на протоколе веб-служб для управления и предлагает надежную основу для управления компьютерами в сети.
Он также очень похож на SSH для доступа к терминалу удаленных операционных систем.
PowerShell Remoting - очень полезный инструмент для системного администратора, упрощающий повседневные задачи.
В этом руководстве мы покажем вам, как включить и использовать функцию PSRemoting в Windows server 2016.
Включить PSRemoting в локальной системе
По умолчанию PSRemoting включен в Windows Server 2012 R2 и Windows server 2016.
* Обратите внимание, что он не включен в клиентах Windows, таких как Windows 8, Windows 10 и более ранних версиях Windows Server.
Чтобы включить PSRemoting в системе Windows, откройте интерфейс PowerShell с правами администратора и выполните следующую команду:
Включить-PSRemoting -Force
Приведенная выше команда запустит службу WinRM.
Включение этого параметра автоматически запустит перезагрузку системы и создаст правило брандмауэра, разрешающее входящие соединения.
Параметр -Force указывает PowerShell выполнять эти действия без запроса.
Примечание : Приведенная выше команда работает только для непубличных сетей.
Если ваш сетевой интерфейс настроен на общедоступный IP-адрес, вы можете включить функцию PSRemote с помощью следующей команды:
Включить-PSRemoting -SkipNetworkProfileCheck -Force
Включить PSRemoting в системе рабочей группы
На данный момент PSRemoting включен только для среды Active Directory.
Это позволит только компьютерам, которые являются членами домена Active Directory, подключаться с помощью удаленного взаимодействия PowerShell.
Если вы хотите включить эту функцию для системы рабочей группы или автономной системы, вам нужно будет вручную добавить IP-адрес компьютера в список TrustedHosts.
Выполните следующую команду, чтобы добавить IP-адрес клиентских компьютеров в TrustedHosts:
Set-Item WSMan: \ localhost \ Client \ TrustedHosts -Value "192.168.0.120" -Force
Вам также потребуется создать новое правило для входящего трафика в брандмауэре Windows для удаленного управления Windows.
Вы можете создать эти правила, выполнив следующие шаги:
1. Откройте брандмауэр => Расширенные настройки , как показано ниже:
2. Щелкните правой кнопкой мыши Входящие правила => Новое правило . Вы должны увидеть следующую страницу:
3. Выберите Predefined и выберите Удаленное управление Windows , как показано ниже:
4. Нажмите кнопку Далее . Вы должны увидеть следующую страницу:
5. Выберите правила и нажмите кнопку Далее . Вы должны увидеть следующую страницу:
6. Выберите все подключения и нажмите кнопку Завершить , чтобы завершить процесс.
Включить PSRemoting для пользователя без прав администратора
По умолчанию только пользователи с правами администратора могут подключаться к удаленному компьютеру через PSRemote.
Если вы хотите подключить удаленную машину с помощью обычного пользователя, вам необходимо добавить учетную запись пользователя в локальную группу «Пользователи удаленного управления».
Чтобы добавить обычного пользователя в группу «Пользователи удаленного управления», выполните следующие действия.
1. Откройте редактор управления групповой политикой, как показано ниже:
2. Перейдите в конфигурацию компьютера => Политики => Параметры безопасности => Ограниченные группы затем щелкните правой кнопкой мыши Ограниченные группы и нажмите Добавить Группа , как показано ниже :
3. Добавьте группу пользователей удаленного управления и пользователя без прав администратора, как показано ниже:
4. Нажмите кнопку ОК , чтобы завершить процесс.
Включение удаленного доступа PSRemoting с помощью групповой политики
Если вы хотите включить PSRemoting удаленно на нескольких компьютерах, вы можете добиться этого, настроив три групповые политики.
1. Включите службу WinRM
Сначала вам нужно включить службу WinRM с помощью групповой политики.
Чтобы включить службу WinRM, выполните следующие действия:
1. Откройте редактор управления групповой политикой и перейдите к:
Конфигурация компьютера => Политики => Административные шаблоны => Компоненты Windows => Удаленное управление Windows (WinRM) => WinRM Service , как показано ниже:
2. Нажмите Разрешить удаленное управление сервером через WinRM , вы должны увидеть следующий экран:
3. Затем включите эту политику и установите фильтры IPv4 / IPv6 на все ( * ) и нажмите кнопку OK .
2. Установите для службы WS-Management автоматический запуск
Чтобы настроить автоматический запуск службы WS-Management, выполните следующие действия:
1. Откройте редактор управления групповой политикой и перейдите к:
Конфигурация компьютера => Политики => Параметры Windows => Безопасность Параметры => Система Службы , вы должны увидеть следующий экран:2. Теперь щелкните Удаленное управление Windows (WS-Management) , вы должны увидеть следующий экран:
3. Сейчас Включите , чтобы эта служба запускалась автоматически, и нажмите кнопку ОК .
3. Разрешить удаленное управление Windows в брандмауэре
Вы можете разрешить удаленное управление Windows в брандмауэре, выполнив следующие действия:
1. Откройте редактор управления групповой политикой и перейдите к:
Конфигурация компьютера => Политики => Windows Параметры => Безопасность Параметры => Windows Брандмауэр с Advanced Security => Windows Firewall с Advanced Security , как показано ниже:2. Затем щелкните правой кнопкой мыши Входящие Правила и щелкните Новое Правило , в поле Предопределенное выберите Удаленное управление Windows , как показано ниже:
3. Затем нажмите кнопку Далее и следуйте инструкциям, чтобы завершить настройку.
Включение удаленного доступа PSRemoting с помощью PsExec
Вы также можете включить PSRemoting удаленно с помощью бесплатного средства удаленного управления Microsoft PsExec.
Перед использованием PsExec вам необходимо открыть порты для совместного использования файлов и принтеров.
Эти порты можно открыть с помощью групповой политики.
Чтобы открыть порты в групповой политике, выполните следующие действия:
1. Откройте редактор управления групповой политикой и перейдите к:
Компьютер Конфигурация => Административный Шаблоны => Сеть => Сеть Подключения => Windows Брандмауэр => Домен Профиль , как показано ниже:
2. Здесь нам нужно Включить исключение для входящего общего доступа к файлам и принтерам или исключение для входящего удаленного администрирования, как показано ниже:
Затем щелкните здесь, чтобы загрузить инструмент PsExec и распаковать его в каталог загрузки.
Затем откройте PowerShell с правами администратора, перейдите в папку, в которую вы скопировали PsExec, и выполните следующую команду, чтобы включить PSRemoting на удаленном компьютере:
psexec.exe \\ RemoteComputerName -s powershell Enable-PSRemoting -Force
Например, включите PSRemoting на удаленном компьютере с именем Windows с помощью следующей команды:
psexec.exe \\ Windows -s powershell Enable-PSRemoting -Force
Вам будет предложено согласиться со сроком действия лицензии, как показано ниже:
Нажмите кнопку Согласен , чтобы включить PSRemoting на удаленном компьютере.
Работа с PSRemoting
На этом этапе PSRemoting включен на машине Windows.
Теперь пора проверить, действительно ли работает PSRemoting.
Во-первых, давайте откроем интерактивный сеанс PSRemoting с удаленным компьютером с именем Windows с помощью следующей команды:
Enter-PSSession -ComputerName Windows
После подключения вы должны увидеть следующий вывод:
[Windows]: PS C: \ Пользователи \ Администратор \ Документы>
Затем выполните команду Get-Process на удаленном компьютере, как показано ниже:
Get-Process
Вы должны увидеть все запущенные процессы на удаленном компьютере на следующем экране:
Заключение
В приведенном выше руководстве мы узнали, как включить PSRemoting в Windows Server 2016, на нескольких примерах.
Надеюсь, теперь вы можете легко управлять несколькими удаленными серверами и компьютерами с помощью PSRemoting.
Если у вас есть какие-либо вопросы или комментарии, не стесняйтесь оставлять их в разделе комментариев ниже!
Enable-PSRemoting | Работа с PowerShell по одному командлету за раз | Еженедельный блог
Это часть продолжающейся серии блогов, написанных Адамом Гордоном. Каждую неделю Адам будет знакомить вас с командой PowerShell, показывая, когда и как использовать каждую из них. На этой неделе Адам расскажет о Enable-PSRemoting.
Когда использовать
Enable-PSRemoting ?Командлет Enable-PSRemoting настраивает компьютер для получения удаленных команд PowerShell, отправляемых с помощью технологии WS-Management. Удаленное взаимодействие PowerShell на основе WS-Management в настоящее время поддерживается только на платформе Windows.
Удаленное взаимодействиеPowerShell включено по умолчанию на платформах Windows Server. Вы можете использовать Enable-PSRemoting, чтобы включить удаленное взаимодействие PowerShell в других поддерживаемых версиях Windows и повторно включить удаленное взаимодействие, если оно будет отключено.
Эту команду нужно запускать только один раз на каждом компьютере, который будет получать команды. Вам не обязательно запускать его на компьютерах, которые только отправляют команды. Поскольку конфигурация запускает прослушиватели для приема удаленных подключений, разумно запускать ее только там, где это необходимо.
Включение удаленного взаимодействия PowerShell в клиентских версиях Windows, когда компьютер находится в общедоступной сети, обычно запрещено, но вы можете пропустить это ограничение с помощью параметра - SkipNetworkProfileCheck .
Несколько установок PowerShell могут существовать бок о бок на одном компьютере. Запуск Enable-PSRemoting настроит конечную точку удаленного взаимодействия для конкретной версии установки, в которой вы запускаете командлет.
Enable-PSRemoting при необходимости создает две конфигурации удаленной конечной точки. Если конфигурации конечных точек уже существуют, их просто необходимо включить. Созданные конфигурации идентичны, но имеют разные названия.У одного будет простое имя, соответствующее версии PowerShell, в которой размещен сеанс. Другое имя конфигурации содержит более подробную информацию о версии PowerShell, в которой размещен сеанс. Например, при запуске Enable-PSRemoting в PowerShell 6.2 вы получите две настроенные конечные точки с именами PowerShell.6 , PowerShell.6.2.2 . Это позволяет вам создать соединение с последней версией хоста PowerShell 6, используя простое имя PowerShell.6 .Или вы можете подключиться к определенной версии хоста PowerShell, используя более длинное имя PowerShell.6.2.2 .
Чтобы использовать недавно включенные конечные точки удаленного взаимодействия, необходимо указать их по имени с параметром - ConfigurationName при создании удаленного подключения с помощью командлетов Invoke-Command, New-PSSession, Enter-PSSession .
Командлет Enable-PSRemoting выполняет следующие операции:
- Запускает командлет Set-WSManQuickConfig , который выполняет следующие задачи:
- Запускает службу WinRM.
- Задает автоматический тип запуска службы WinRM.
- Создает слушателя для приема запросов с любого IP-адреса.
- Включает исключение брандмауэра для связи WS-Management.
- При необходимости создает конфигурации конечных точек сеанса с простыми и длинными именами.
- Включает все конфигурации сеанса.
- Изменяет дескриптор безопасности всех конфигураций сеанса, чтобы разрешить удаленный доступ.
- Перезапускает службу WinRM, чтобы предыдущие изменения вступили в силу.
Чтобы запустить этот командлет на платформе Windows, запустите PowerShell с помощью параметра «Запуск от имени администратора». Этот командлет недоступен в версиях PowerShell для Linux или MacOS.
ПРИМЕЧАНИЕ:
Этот командлет не влияет на конфигурации удаленных конечных точек, созданные Windows PowerShell. Это влияет только на конечные точки, созданные с помощью PowerShell версии 6 и выше. Чтобы включить или отключить конечные точки удаленного взаимодействия PowerShell, размещенные в Windows PowerShell, запустите командлет Enable-PSRemoting из сеанса Windows PowerShell.
Какую версию PowerShell я использую?
Получите версию PowerShell со своего компьютера :
$ PS Таблица версий
Эта команда показывает информацию о версии PowerShell на вашем компьютере.
Как использовать
Enable-PSRemoting?Разрешить удаленный доступ клиентам :
Get-NetFirewallRule -Name «WINRM *» | Выбрать имя объекта
Enable-PSRemoting -SkipNetworkProfileCheck -Force
Set-NetFirewallRule -Name ‘WINRM-HTTP-In-TCP’ -RemoteAddress Any
В этом примере показано, как разрешить удаленный доступ из общедоступных сетей в клиентских версиях операционной системы Windows.Название правила брандмауэра может быть разным для разных версий Windows. Используйте Get-NetFirewallRule , чтобы просмотреть список правил. Перед включением правила брандмауэра просмотрите параметры безопасности в правиле, чтобы убедиться, что конфигурация подходит для вашей среды.
По умолчанию Enable-PSRemoting создает сетевые правила, разрешающие удаленный доступ из частных и доменных сетей. Команда использует параметр - SkipNetworkProfileCheck , чтобы разрешить удаленный доступ из общедоступных сетей в той же локальной подсети.В команде указан параметр - Force для подавления подтверждающих сообщений.
Параметр - SkipNetworkProfileCheck не влияет на серверные версии операционной системы Windows, которые по умолчанию разрешают удаленный доступ из общедоступных сетей в той же локальной подсети.
Командлет Set-NetFirewallRule в модуле NetSecurity добавляет правило брандмауэра, которое разрешает удаленный доступ из общедоступных сетей из любого удаленного места.Сюда входят местоположения в разных подсетях.
Возвращайтесь в блог каждую среду, чтобы узнать новую команду.
Выучите команду прошлой недели: Get-Command.
Требуется обучение PowerShell? Ознакомьтесь с онлайн-курсами ИТ-обучения PowerShell от ITProTV.
Настройка удаленного взаимодействия через GPO - секреты удаленного взаимодействия PowerShell
PowerShell about_remote_troubleshooting предоставляет хороший набор шагов для настройки основных функций удаленного взаимодействия с помощью объектов групповой политики (GPO).Запуск Enable-PSRemoting также раскрывает некоторые полезные детали, такие как четыре основных конфигурации. В этом разделе мы рассмотрим эти основные этапы настройки.
Примечание: Ничего из этого не требуется в Windows Server 2012 и более поздних версиях серверной ОС. Удаленное взаимодействие включено по умолчанию для них, и его не следует отключать, так как многие из собственных инструментов управления (включая консоли с графическим интерфейсом, такие как Server Manager) зависят от удаленного взаимодействия.
Следует иметь в виду, что объекты групповой политики могут только создавать изменения конфигурации; они не могут обязательно изменить активное состояние компьютера.Другими словами, хотя объект групповой политики может настроить режим запуска службы на «Автоматический», он не может запустить службу. Это произойдет автоматически при перезагрузке компьютера. Дело не столько в необходимости перезагрузки, сколько в том, что компьютер запускает службы только после загрузки. Поэтому во многих случаях изменения, которые вы вносите с помощью GPO (в отношении удаленного взаимодействия), фактически не вступят в силу до следующего перезапуска затронутых компьютеров, потому что в большинстве случаев компьютер просматривает конфигурацию только во время загрузки.Просто имейте это в виду.
Кроме того, все в этом разделе предполагает, что PowerShell уже установлен на целевых компьютерах - то, что также может быть выполнено с помощью объекта групповой политики или другого механизма развертывания программного обеспечения, но не то, что мы собираемся здесь рассматривать. Обратите внимание, что большая часть этого раздела должна применяться либо к PowerShell v2, либо к v3; мы собираемся запустить примеры, используя v2 на клиентском компьютере Windows 7, принадлежащем домену Windows Server 2008 R2.
Примечание. Некоторые из параметров GPO, которые мы рассмотрим, стали доступны в Windows 2008 и Windows 2008 R2, но вы сможете установить необходимые административные шаблоны на любой контроллер домена.Набор средств удаленного администрирования сервера (RSAT) для Windows 7 (и более поздних версий) содержит необходимые шаблоны.
Мы не знаем наверняка, нужно ли выполнять шаги настройки GPO в том порядке, в котором мы их представляем; в большинстве случаев мы ожидаем, что вы сделаете их все сразу в одном GPO, поэтому это не имеет значения. Мы проводим их поэтапно в этом порядке, чтобы мы могли проверять отдельные результаты по ходу.
Как объяснялось ранее в этом руководстве, служба WinRM настраивает один или несколько приемников для приема входящего трафика.Например, запуск Enable-PSRemoting настраивает прослушиватель HTTP, и мы рассмотрели, как настроить прослушиватель HTTPS в дополнение или вместо этого прослушивателя по умолчанию.
Этот параметр находится в папке: Конфигурация компьютера \ Административные шаблоны \ Компоненты Windows \ Удаленное управление Windows (WinRM) \ Служба WinRM. Включите политику и укажите фильтры IPv4 и IPv6, которые определяют, какие прослушиватели IP-адресов будут настроены. Вы можете использовать подстановочный знак * для обозначения всех IP-адресов, что мы и сделали на рисунке 7.1.
image075.png
Рисунок 7.1: Включение автоматической настройки прослушивателей WinRM
Эта служба настроена на автоматический запуск в новых серверных операционных системах (Windows Server 2003 и новее), но не на клиентах. Таким образом, этот шаг потребуется только для клиентских компьютеров. Опять же, это не запустит службу, но при следующей перезагрузке компьютера служба запустится автоматически.
Microsoft предлагает выполнить эту задачу, запустив команду PowerShell, которая не требует включения удаленного взаимодействия для работы:
Set-Service WinRM -computername $ servers -startup Automatic
Вы можете заполнить $ server любым способом вам нравится, если он содержит строки, которые являются именами компьютеров, и пока у вас есть учетные данные администратора на этих компьютерах.Например, чтобы захватить каждый компьютер в вашем домене, вы должны запустить следующее (это предполагает PowerShell v2 или v3 на компьютере под управлением Windows 7 с установленным RSAT):
Import-Module ActiveDirectory
$ servers = Get- ADComputer -фильтр \ * | Выберите -expand name
На практике вы, вероятно, захотите ограничить количество компьютеров, которые вы делаете одновременно, либо указав -Filter, кроме «*», либо указав -SearchBase и ограничив поиск конкретным OU.Прочтите справку по Get-ADComputer, чтобы узнать больше об этих параметрах.
Обратите внимание, что Set-Service вернет ошибку для всех компьютеров, с которыми он не может связаться или для которых изменение не сработало, а затем продолжит работу со следующим компьютером.
В качестве альтернативы вы можете настроить это с помощью GPO. В разделе «Конфигурация компьютера» \ Параметры Windows \ Параметры безопасности \ Системные службы найдите «Удаленное управление Windows». Щелкните его правой кнопкой мыши и установите автоматический режим запуска. Это то, что мы сделали на рисунке 7.2.
image076.png
Рисунок 7.2: Настройка режима запуска службы WinRM
Этот шаг будет необходим на всех компьютерах, на которых включен брандмауэр Windows. Мы предполагаем, что вы хотите, чтобы удаленное взаимодействие было включено только в вашем профиле брандмауэра домена, поэтому это все, что мы делаем в нашем примере. Очевидно, что вы можете управлять любыми другими исключениями в любых профилях, подходящих для вашей среды.
Вы найдете один параметр в разделе Конфигурация компьютера \ Административные шаблоны \ Сеть \ Сетевые подключения \ Брандмауэр Windows \ Профиль домена.Обратите внимание, что политика «Брандмауэр Windows: разрешить исключения локального порта» просто позволяет локальным администраторам настраивать исключения брандмауэра с помощью панели управления; на самом деле он не создает никаких исключений. В некоторых случаях это может быть именно то, что вам нужно.
Вместо этого мы перешли к политике «Определить исключения входящего порта» и включили ее, как показано на рисунке 7.3.
image077.png
Рисунок 7.3: Включение исключений брандмауэра
Затем мы щелкнули «Показать» и добавили «5985: TCP: *: enabled: WinRM» в качестве нового исключения, как показано на рисунке 7.4.
image078.png
Рисунок 7.4: Создание исключения межсетевого экрана
После применения вышеуказанных изменений GPO мы перезапустили наш клиентский компьютер. Когда служба WinRM запускается, она проверяет, есть ли у нее настроенные слушатели. Когда он обнаруживает, что это не так, он должен попытаться автоматически настроить один - что мы теперь разрешили делать через GPO. Исключение межсетевого экрана должно позволить входящему трафику достигать слушателя.
Как показано на рисунке 7.5, похоже, что это работает.Мы нашли только что созданный слушатель!
image079.png
Рисунок 7.5: Проверка только что созданного прослушивателя WinRM
Конечно, доказательство - как говорится - в пудинге. Итак, мы перешли к другому компьютеру и, как показано на рисунке 7.6, смогли инициировать интерактивный сеанс удаленного взаимодействия с нашим исходным клиентским компьютером. Мы ничего не настраивали, кроме GPO, и все работает.
image080.png
Рисунок 7-6: Инициирование сеанса удаленного взаимодействия «один-к-1» с клиентским компьютером, настроенным с помощью GPO
Как мы уже говорили, вы не можете использовать GPO для запуска службы WinRM.Вы также не можете создавать настраиваемые прослушиватели через GPO и не можете создавать настраиваемые конечные точки PowerShell (конфигурации сеанса). Однако после включения базового удаленного взаимодействия через GPO вы можете использовать командлет PowerShell Invoke-Command для удаленного выполнения этих других задач. Вы даже можете использовать Invoke-Command для удаленного отключения прослушивателя HTTP по умолчанию, если вы этого хотите.
Также имейте в виду, что WSMAN PSProvider PowerShell может отображать конфигурацию WinRM удаленных компьютеров на ваш локальный диск WSMAN :.