使用Register-PSSessionConfiguration解决双跳问题时报500错误如何处理
报错原因排查
- 第一行代码存在语法错误:
-Credential -$Credentials参数值前多了一个多余的横杠,会导致凭证传参异常,注册的会话配置使用的RunAs凭证本身就无效 - 注册PSSessionConfiguration之后没有重启WinRM服务,新配置未生效,连接时会触发服务端内部500错误
- 部分Windows环境下,需要明确配置自定义会话配置的访问权限,确保你使用的凭证有权限调用该配置
修正后完整可用代码
# 1. 初始化变量,替换为实际的机器名、网络路径 $Machine = "目标机器名称" $Credentials = Get-Credential -Message "输入具备网络驱动器访问权限的凭证" $NetworkPath = "\\networkDrive\你的共享路径" $ConfigName = "4SysOps" # 2. 建立初始会话注册自定义配置 $Session = New-PSSession -ComputerName $Machine -Credential $Credentials Invoke-Command -Session $Session -ArgumentList $Credentials, $ConfigName -ScriptBlock { param($Credentials, $ConfigName) # 注册指定RunAs凭证的会话配置 Register-PSSessionConfiguration -Name $ConfigName -RunAsCredential $Credentials -Force # 重启WinRM让配置生效,必须执行 Restart-Service WinRM -Force Start-Sleep -Seconds 10 } # 3. 使用自定义配置访问网络路径,解决双跳限制 Invoke-Command -ComputerName $Machine -Credential $Credentials -ScriptBlock { param($NetworkPath) Get-ChildItem -Path $NetworkPath } -ArgumentList $NetworkPath -ConfigurationName $ConfigName # 4. 使用完成后注销配置清理环境 Invoke-Command -ComputerName $Machine -Credential $Credentials -ScriptBlock { param($ConfigName) Unregister-PSSessionConfiguration -Name $ConfigName -Force Restart-Service WinRM -Force }
注意事项
- 运行代码的账号、传入的
$Credentials凭证,都需要在目标机器上拥有管理员权限,才能完成注册/注销会话配置、重启WinRM服务的操作 - 若目标机器启用了防火墙,需要确保WinRM默认端口(5985/HTTP、5986/HTTPS)已开放
- 排查问题时可在目标机器运行
Get-PSSessionConfiguration -Name 4SysOps查看配置状态,确认RunAs凭证已正确写入
内容的提问来源于stack exchange,提问作者Rafał Łątka
相关产品推荐
相关产品推荐

