Служба WinRM работает, но не отвечает

У меня есть среда с 16 виртуальными машинами на хосте. Все они работают под управлением Windows2008R2. В какой-то момент удаленное взаимодействие с PowerShell работало на всех серверах, кроме одного. Затем я потерял связь еще с двумя. Это, мягко говоря, раздражает. Каждый раз я возвращаюсь к тому факту, что WinRM работает как служба, но по-прежнему не работает.

Он настроен на использование ssl. Invoke-Command -ComputerName "BadMachine" -ScriptBlock {Get-Service | Where-Object {($ _. Name -eq "WinRM") -and ($ _. Status -eq "Выполняется" )}} -ErrorAction Stop -UseSSL -Credential (Get-Credential) приводит к хорошо известному

[BadMachine] Connecting to remote server BadMachine failed with the
following error message : WinRM cannot complete the operation. Verify...
etc.,etc.,etc.

. На неисправной машине winrm quickconfig сообщает, что служба WinRM уже запущена, а затем показывает указанную выше ошибку.

На плохой машине Get-Service "WinRM" возвращает хороший объект, говорящий, что служба запущена.

На плохой машине идентификатор WinRM ничего не возвращает (на хороших машинах он дает полный ответ IdentifyResponse).

winrm get wmicimv2 / Win32_Service? Name = WinRM дает указанную выше ошибку (на хорошей машине возвращает статус).

cd wsman: позволяет мне переключиться на провайдера wsman, и есть localhost. Но после перехода на localhost там ничего нет. Итак, cd WSMan: \ localhost \ Listener приводит к ошибке Не удается найти путь .

netsh http show urlacl ни к чему не приводит (на хорошей машине возвращает резервирование URL)

Большинство В статьях описывается, как настроить удаленное взаимодействие PowerShell, и могут обсуждаться способы устранения неполадок в некоторых частях. Но очевидно, что в удаленном взаимодействии с WinRM и PowerShell может возникнуть много проблем, поэтому у меня возникают следующие вопросы:

Как исправить эту установку WinRM? Усложняет ли тот факт, что они являются виртуальными машинами на хосте Hyper-V? Что еще предстоит проверить, чтобы понять суть проблемы?

2
задан 18 February 2017 в 00:12
1 ответ

Статья об архитектуре WinRM побудила меня исследовать Http.sys. Поскольку IIS работает нормально, я бы не подозревал, что Http.sys. Команда netsh http show urlacl показала, что не было зарезервированных URL-адресов.

https://support.microsoft.com/en-us/help/820129/http.sys-registry-settings-for- windows помог мне сравнить реестр плохой машины с хорошей. Значения реестра для HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ HTTP \ Parameters \ UrlAclInfo не существовали на неисправном компьютере. Также значения для HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ HTTP \ Parameters \ SslBindingInfo \ 0.0.0.0: 5986 (привязка для WinRM) не существует. Я понятия не имею, чем это вызвано.

Поскольку все серверы в моей среде выглядят примерно одинаково, я экспортировал указанные выше ключи и импортировал ключи в реестр неисправной машины. Я думаю, это возможно только в том случае, если две машины достаточно похожи. Но это решило проблему для меня. После запуска Enable-PSRemoting я теперь могу подключиться ко всем своим машинам в среде.

Экспериментируя, я обнаружил, что SslBindingInfo ( netsh http show sslcert ) должен показывать привязку для портов 5986 (winrm, сертификат, который вы хотите использовать для -UseSSL), acl должен содержать резервирование для портов 5357 и 5358 (http и https для сетевого обнаружения?), 47001 (http, wsman), 5985 и 5986 (http и https для winrm).

1
ответ дан 3 December 2019 в 12:37

Теги

Похожие вопросы