如何修复 "WinRM客户端无法处理请求,因为提供的安全描述符是无效的. "
描述
此错误发生在Windows远程管理 (WinRM) 服务未能解析或应用其配置或会话配置 (如Microsoft.PowerShell) 分配的安全描述器定义语言 (SDDL) 字符串时. 这通常是由于手动配置错误,受损的注册表条目或试图限制WinRM访问但使用错误的SDDL格式的错误组策略造成的. 因为安全描述器无效,WinRM服务阻止所有输入或输出远程连接以保护系统.
逐步修复问题
方法1:将WinRM安全配置重置为默认设置
最快的修复无效安全描述符的方式是重置WinRM默认会话配置.
- 按下 Start 菜单,类型
cmd. - 按下右键 Command Prompt 并且选择 Run as administrator.
- 输入下面的命令并按下 Enter 要恢复默认终点:
Enable-PSRemoting -Force - 如果错误阻止 PowerShell 执行命令,请在标准命令提示符中运行,重建 WinRM 收听器:
winrm quickconfig -q
方法2:通过注册表编辑器修复根SDDL
如果默认配置命令失败,您可以手动从Windows注册表中删除受损的安全描述符,以便WinRM可以再生它.
- 按下
Win + R, 类型regedit,然后按下 Enter 打开注册表编辑器. - 导航到以下路径:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WSMAN\Service - 寻找一个名为 的二进制或字符串值.
RootSDDL. - 按下右键
RootSDDL并且选择 Delete. - 导航到插件配置路径检查特定会话损坏:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WSMAN\Plugin - 扩展子文件 (如
Microsoft.PowerShell) 并删除任何ConfigSDDL关键可能被损坏. - 关闭注册表编辑器.
- 通过在管理命令提示符中运行以下命令重新启动您的计算机或重新启动 WinRM 服务:
net stop winrm net start winrm
方法3:通过PowerShell修复错误的SDDL (如果允许访问)
如果您可以作为管理员打开本地 PowerShell 控制台,则可以用一个干净的默认 SDDL 字符串明确覆盖破损的安全描述符.
- 打开 PowerShell 作为一个管理员.
- 运行下面的命令,为 WinRM 根配置设置通用标准安全描述符:
Set-Item WSMan:\localhost\Service\RootSDDL -Value "O:NSG:BAD:P(A;;GA;;;BA)(A;;GR;;;IU)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;;WD)" - 重新启动 WinRM 服务以应用更改:
Restart-Service winrm
方法4:检查和恢复组策略设置
如果这个错误突然开始发生在多台机器上,则一个组策略对象 (GPO) 可能正在推送错误的 SDDL 字符串.
- 按下
Win + R, 类型gpedit.msc,然后按下 Enter 打开本地组策略编辑器. - 导航到: Computer Configuration 没有. Administrative Templates 没有. Windows Components 没有. Windows Remote Management (WinRM) 没有. WinRM Service
- 找一个名为 Disallow WinRM unencrypted traffic 或任何自定义的安全设置.
- 确保在策略字段中不会粘贴任何自定义,错误的安全描述符字符串.
- 如果进行了更改,请作为管理员打开命令提示符并强制更新策略:
gpupdate /force
可能有一些错误.. Learn Microsoft