Windows 错误: WinRM 客户端无法处理请求,因为它试图更新仅读设置.
描述
This error occurs in Windows environments when a user, script, or configuration management tool (like Ansible, PowerShell Remoting, or Windows Admin Center) attempts to modify a Windows Remote Management (WinRM) configuration parameter that is marked as read-only, restricted by Local Group Policy, or blocked by the operating system’s security defaults.
WinRM将设置分为可配置参数和静态,硬编码或政策强制值.如果自动脚本试图应用包含这些受保护设置的全球配置块,WinRM会拒绝整个交易.
一步一步的修复
要解决此问题,您必须确定目标的仅读参数或覆盖策略限制. 按照以下步骤顺序执行:
步骤1:确定造成冲突的因素
If you are running a deployment script or using a tool like Ansible, look at the specific WinRM tasks being executed.
- 寻找配置键,例如
MaxEnvelopeSizekb,MaxTimeoutms,或特定的收听器设置. - 检查脚本是否试图强制更新由Active Directory组策略管理的属性.
步骤2:检查组策略对象 (GPO) 覆盖
如果您的域管理员强制执行设置,手动更改将被拒绝为仅读.
- 按下 Windows Key + R, 类型
rsop.msc(结果的政策集),并按一下 Enter. - 导航到: Computer Configuration -> 没有. Administrative Templates -> 没有. Windows Components -> 没有. Windows Remote Management (WinRM).
- 检查一下 WinRM Client 这里是我的家. WinRM Service 文件.
- 如果设置状态标记为 Enabled 或是 Disabled 通过GPO,您不能通过命令行更改它.您必须要求网络管理员修改GPO,或者暂时将机器从目标组织单元 (OU) 中移除.
步骤3:通过PowerShell清除WinRM配置
如果错误是由本地受损或卡住的配置状态引起的,则重置 WinRM 服务配置可以解决它.
- 按下 Start 菜单,类型
PowerShell,右键点击 Windows PowerShell,并选择 Run as Administrator. - 通过执行:
Stop-Service winrm - 通过运行重置 WinRM 配置属性到默认值:
winrm quickconfig -q - 重新启动 WinRM 服务:
Start-Service winrm
步骤4:从自动化脚本中排除仅读参数
如果您正在使用Ansible (特别是模块,如 ansible.windows.win_powershell 或社区 WinRM 集合),您的游戏手册可能试图确保所有 WinRM 状态与基线相匹配.
- 打开您的配置游戏簿或初始化脚本.
- 找到修改WinRM设置的任务.
- 删除或评论试图修改Windows固有保护的配置字段的行 (例如,不要试图手动覆盖默认SPN或特定的架构锁定参数).
步骤5:验证配置状态
在执行上述步骤后,验证WinRM客户端是否可以读取配置文件,而无需强制写入仅读路径.
- 打开一个升级的PowerShell提示符.
- 运行下列命令输出当前工作客户端配置:
winrm get winrm/config/client - 如果配置完全打印而不会产生错误,则冲突已成功缓解.
可能有一些错误.. Learn Microsoft