远程Powershell不工作,但testing-swman做

我需要编写一些例程任务来远程执行从serverA到多个主机,但其中有一些却无法执行脚本。

如果我执行这个:

$cred = Get-Credential myUser Invoke-Command -ComputerName serverB -ScriptBlock{gci d:\} -Credential $cred 

或这个:

 Test-WSMan -ComputerName ServerB -Credential $cred -Authentication Negotiate 

我得到以下错误

[SeverB]连接到远程服务器ServerB失败,并显示以下错误消息:WinRM无法处理请求。 使用协商身份validation时发生错误代码0x80090322的以下错误:发生未知的安全错误。 可能的原因是: – 指定的用户名或密码无效。 -Kerberos用于没有authentication方法和用户名没有指定。 -Kerberos接受域用户名,但不接受本地用户名。 – 远程计算机名称和端口的服务主体名称(SPN)不存在。 – 客户端和远程计算机处于不同的域,两个域之间没有信任。 检查上述问题后,请尝试以下操作: – 检查与事件查看器相关的身份validation事件。 – 更改authentication方法; 将目标计算机添加到WinRM TrustedHostsconfiguration设置或使用HTTPS传输。 请注意,TrustedHosts列表中的计算机可能未经过身份validation。 – 有关WinRMconfiguration的更多信息,请运行以下命令:winrm help config。 有关更多信息,请参阅about_Remote_Troubleshooting帮助主题。 + CategoryInfo:OpenError:(serverB:String)[],PSRemotingTransportException + FullyQualifiedErrorId:-2144108387,PSSessionStateBroken

但是当我单独使用test-wsman时:

 Test-WSMan -ComputerName ServerB wsmid : http://schemas.dmtf.org/wbem/wsman/identity/1/wsmanidentity.xsd ProtocolVersion : http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd ProductVendor : Microsoft Corporation ProductVersion : OS: 0.0.0 SP: 0.0 Stack: 3.0 

我不知道问题出在哪里。 我已经尝试使用enable-psremotewinrm qc ,检查防火墙设置和用户权限

看起来像是一个问题,存在spn映射问题,在powershell中,您可以删除spn帐户并重试。

 setspn -D HTTP/SERVERNAME <domain account> setspn -D HTTP/SERVERNAME.DOMAINAME.COM <domain account> 

如果问题仍然存在,则可以使用ip地址(IPv4)而不是服务器名称来检查以绕过Kerberos错误。

来源https://serverfault.com/questions/580411/windows-server-manager-kerberos-error-0x80090322

https://social.technet.microsoft.com/Forums/windows/en-US/a4c5c787-ea65-4150-8d16-2a19c569a589/enterpssession-winrm-cannot-process-the-request-kerberos-authentication-error-0x80090322?论坛= winserverpowershell

我解决了我的问题。 Kerberos Autentication,Remote Powershell和Intregation Service(服务器正在运行该应用程序)之间存在已知问题。 信息可以在这里和这里find

我必须为服务器(serverB_alias)创build一个AloggingDNS,并将此服务器的HTTP spn设置为指定wsman尝试连接的端口(5985)。

 setspn -s http/serverB domain\user setspn -s http/serverB.domain domain\user setspn -s http/serverB_alias:5985 domain\user setspn -s http/serverB_alias.domain:5985 domain\user