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

如何通过PowerShell远程重置WinRM服务并安全重注册同名PS会话?

无需重启WinRM重注册同名PsSessionConfiguration的方案

核心结论

没有无需重启WinRM服务就能安全注销并重新注册同名PowerShell会话配置(PsSessionConfiguration)的官方方法。注销同名配置后,WinRM服务内存中会保留旧配置的缓存,不重启的话新配置无法正常生效,甚至引发会话异常。

可靠替代方案:远程计划任务执行

由于直接远程执行会因WinRM重启断开连接,使用Windows计划任务是最稳妥的方式:

  • 远程创建一个以系统账户运行的计划任务,包含注销旧配置、重启WinRM、注册新配置的完整逻辑
  • 任务设置为延迟几秒后触发,启动任务后本地会话可直接断开,避免连接中断
  • 后续可通过查询任务状态或检查会话配置验证执行结果

示例远程创建计划任务的代码:

Invoke-Command 'RemoteServer' {
    # 定义任务执行的PowerShell命令,包含完整操作逻辑
    $command = @"
Unregister-PsSessionConfiguration -Name 'MySession' -Force
Restart-Service WinRM -Force
Register-PsSessionConfiguration -Name 'MySession' -SecurityDescriptorSddl 'O:NSG:BAD:P(A;;GA;;;BA)(A;;GA;;;SY)'
"@
    $taskAction = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument "-Command $command"
    $taskTrigger = New-ScheduledTaskTrigger -Once -At (Get-Date).AddSeconds(10)
    $taskSettings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries
    # 注册并启动任务,使用系统账户确保权限足够
    Register-ScheduledTask -TaskName "ReRegister-MySession" -Action $taskAction -Trigger $taskTrigger -Settings $taskSettings -User "NT AUTHORITY\SYSTEM" -Force
    Start-ScheduledTask -TaskName "ReRegister-MySession"
}

关键安全提示

注册PsSessionConfiguration时,必须强制使用-SecurityDescriptorSddl参数,通过SDDL字符串严格限制访问权限,防止未授权的管理员或用户随意访问该会话配置。示例中的SDDL仅允许内置管理员组和系统账户拥有完全控制权,可根据实际需求调整规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 00:07:27