You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Set-LocalUser在单台计算机突然失效,WinRM身份验证失败求助

问题分析与解决

环境信息

  • PowerShell 5.1
  • Windows Server 2016 Standard

问题详情

使用Invoke-Command远程执行Set-LocalUser为多台机器设置本地用户密码时,Computer1正常运行,但Computer2突然出现WinRM Kerberos认证失败,错误代码0x80090311,提示域不可用,本地事件日志未发现异常。

执行脚本:

Invoke-Command -ComputerName Computer1,Computer2 -Credential $credential -ScriptBlock {
    $securePassword = ConvertTo-SecureString -String 'P@$$w0rd123' -AsPlainText -Force
    Set-LocalUser -Name User1 -Password $securePassword -Verbose
}

错误信息:

[Computer2] 连接远程服务器Computer2失败,错误信息如下: WinRM 无法处理请求。使用Kerberos身份验证时出现错误代码0x80090311的错误: 无法使用此凭据登录,因为你的域不可用。请确保设备已连接到组织网络并重试。如果你之前使用其他凭据在此设备上登录,可以使用该凭据登录。
可能的原因包括:
  - 指定的用户名或密码无效。
  - 未指定身份验证方法和用户名时使用Kerberos。
  - Kerberos接受域用户名,但不接受本地用户名。
  - 远程计算机名称和端口的服务主体名称(SPN)不存在。
  - 客户端和远程计算机位于不同域,且两个域之间不存在信任关系。
检查上述问题后,请尝试以下操作:
  - 检查事件查看器中与身份验证相关的事件。
  - 更改身份验证方法;将目标计算机添加到WinRM TrustedHosts配置设置或使用HTTPS传输。
请注意,TrustedHosts列表中的计算机可能未经过身份验证。
  - 有关WinRM配置的更多信息,请运行以下命令: winrm help config。有关详细信息,请参阅about_Remote_Troubleshooting帮助主题。
    + CategoryInfo          : OpenError: (Computer2:String) [], PSRemotingTransportException
    + FullyQualifiedErrorId : AuthenticationFailed,PSSessionStateBroken

解决方案

1. 排查域连接与Kerberos SPN问题

  • 检查Computer2域连接状态:
    本地登录Computer2,执行命令验证域信任:
    nltest /sc_query:你的域名
    
    若返回失败,检查网络连接是否正常、能否ping通域控制器,必要时重启Computer2重新加入域。
  • 验证WinRM服务SPN:
    在域控制器上执行命令,查看Computer2的SPN注册情况:
    setspn -L Computer2
    
    确保存在WSMAN/Computer2和WSMAN/Computer2.你的域名两个SPN。若缺失,执行以下命令添加:
    setspn -A WSMAN/Computer2 Computer2
    setspn -A WSMAN/Computer2.你的域名 Computer2
    

2. 改用NTLM认证(若使用本地凭据)

Kerberos不支持跨机器的本地用户认证,如果你使用的是Computer2的本地管理员凭据,需修改脚本使用NTLM认证,并将Computer2加入客户端的WinRM可信主机列表:

  • 先在执行脚本的客户端添加可信主机:
    Set-Item WSMan:\localhost\Client\TrustedHosts -Value "Computer2" -Concatenate -Force
    
  • 修改Invoke-Command脚本,指定NTLM认证:
    Invoke-Command -ComputerName Computer1,Computer2 -Credential $credential -Authentication NTLM -ScriptBlock {
        $securePassword = ConvertTo-SecureString -String 'P@$$w0rd123' -AsPlainText -Force
        Set-LocalUser -Name User1 -Password $securePassword -Verbose
    }
    

3. 验证凭据有效性

确认$credential对应的账号在Computer2上拥有管理员权限,且密码未过期、未锁定。可直接在Computer2本地使用该凭据登录测试。

4. 检查WinRM服务状态

本地登录Computer2,执行命令检查WinRM服务:

Get-Service WinRM

确保服务状态为Running,启动类型为Automatic。若服务异常,重启服务:

Restart-Service WinRM -Force

内容的提问来源于stack exchange,提问作者Rod

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 01:47:49