Когато конфигурирате WinRM на сървъри в домейн на Active Directory, срещнах странен проблем. След като услугата WinRM е конфигурирана и активирана на сървъра, е позволено да се свързва дистанционно чрез Windows PowerShell Remoting, когато се опитвате да се свържете дистанционно с този сървър с помощта на командата Enter-PSSession msk-dp01
Следната грешка в WinRM се появява в конзолата PowerShell:
ред: 1 знак: 1
+ Enter-PSSession msk-dp01
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo: InvalidArgument: (msk-dp01: String) [Enter-PSSession], PSRemotingTransportException
+ FullyQualifiedErrorId: CreateRemoteRunspaceFailed
В английската версия на Windows грешката изглежда така:
PS C: \ Windows \ system32> Enter-PSSession msk-dp01Enter-PSSession: Свързването с отдалечен сървър msk-dp01 не успя със следното съобщение за грешка: WinRM клиентът получи състояние на лоша заявка на HTTP (400), но отдалечената услуга не включваше друга информация за причината за повредата. За повече информация вижте темата „Помощ за отстраняване на проблеми“.
На ред: 1 char: 1
+ Enter-PSSession msk-dp01
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo: InvalidArgument: (msk-dp01: String) [Enter-PSSession], PSRemotingTransportException
+ FullyQualifiedErrorId: CreateRemoteRunspaceFailed
В същото време на сървъра WinRm портовете (5985 / HTTP, 5986 / HTTPS) отговарят и приемат връзки. Можете да проверите наличието на WinRM TCP портове с помощта на помощната програма PortQryV2 или командлета PowerShell Test-NetConnection:
TNC msk-dp01 -port 5985
Както се оказа, проблемът се оказа свързан с големия маркер Kerberos на потребителя, поради факта, че потребителят е в твърде много групи от домейни. Грешката възниква, когато размерът на маркера е 16 Kb (вижте статията MaxTokenSize - Kerberos Token Size). В нашата ситуация се случва същото, сървърът WinRm нулира заявката от клиента, защото размер на заглавката на пакета за удостоверяване надвишава 16 Kb. В статията за справка споменахме, че по подразбиране IIS използва размер на HTTP заглавката не повече от 16 Kb, а в случай на проблеми с удостоверяването на HTTP поради голям потребителски маркер, той трябва да бъде увеличен до 64 Kb
За да отстраните проблема, трябва да намалите размера на токена (намалете броя на групите за сигурност, от които потребителят е член), а ако това не е възможно, тогава в редактора на системния регистър на сървъра трябва да промените стойността на следните параметри на регистъра DWORD в клона HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ HTTP \ Параметри
- MaxFieldLength увеличение до 0000ffff (65535)
- MaxRequestBytes увеличение до 0000ffff (65535)
Остава да рестартирате сървъра и да проверите връзката на WinRm чрез Enter-PSSession от клиента.