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

使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 01:54:03