Powershell 调用命令多跳

Powershell invoke-command multihopping


我有一个关于 windows 环境中的多跳问题。
假设我在服务器 A(中央调度程序)上有一个计划 运行,它在服务器 B 上执行一个命令。该脚本包含一个将文件保存在远程文件管理器(UNC 路径,服务器 C)上的调用。跃点 1(从 A 到 B)运行良好,跃点 2(从 B 到 C)失败。 我已经测试过将文件本地保存在服务器 B 上,效果很好。 我认为第二跳有问题。我记得前段时间在论坛上看过类似的东西,但是想不起来解决方法了。
详细而言,该命令如下所示:

$session = New-PSSession -computer ComputerName    
$templatepath = "\filerpath\"
Invoke-Command -Session $session -Scriptblock { powershell ovpmutil cfg pol dnl $Using:templatepath /p \BSH }

澄清一下:Powershell 在执行第二步时给了我一个 "Access denied"。我已经按照此处所述启用了凭证委托: Enabling Multihop Remoting
感谢任何帮助。
在此先感谢

如果你问我,这个解决方案真的很痛苦,但就在这里......

在原始服务器 (A) 上:

Set-Item WSMAN:\localhost\client\auth\credssp -value $true

在中间服务器 (B) 上:

Set-Item WSMAN:\localhost\client\auth\credssp -value $true

打开服务器 A 上的组策略编辑器,导航至:

Computer Configuration > Administrative Templates > System > Credentials Delegation

启用这些选项:

  • 允许委派新凭据
  • 允许使用仅 NTLM 服务器身份验证委派新凭据

这两个策略都需要将服务器B添加到允许列表中,允许通配符。请注意,如果您使用来自服务器 A 的 RDP,您还需要添加 TERMSRV/*

当 运行 从服务器 A 调用命令时,包含 -Authentication CredSSP 参数。

请注意,如果将 SecureStrings 保存在某处以便连接到服务器 C 的凭据,您将需要使用固定加密(指定字节数组)或纯文本并进行转换。