0

我有三个框:A、B、C。
我试图从 A 调用 C 上的命令,而不提示输入凭据。

我可以成功地调用命令
a) 从 A 到 B
b) 从 B 到 C
但不能
用嵌套的 Invoke-Command 从 A 调用 c) 在 C 上

我想我可以通过从 B 调用 A 和 C 来解决问题。
但是为什么它不能以这种方式工作仍然困扰着我。所有三个盒子似乎都配置正确。
我什至无法弄清楚这是身份验证还是网络问题。

请问有什么帮助吗?

错误是:

Connecting to remote server failed with the following error message: 
WinRM cannot process the request. The following error occured while using 
Negotiate authentication: A specified logon session does not exist. 
It may already have been terminated.
(...)
+ CategoryInfo          : OpenError: (:) [], PSRemotingTransportException
+ FullyQualifiedErrorId : PSSessionStateBroken
+ PSComputerName        : [IP]

详细信息:
准备存储的密码:

$key = ([KEY])
Read-Host -AsSecureString| ConvertFrom-SecureString -Key $key| Out-File [PATH]

调用 A > B

$key = ([KEY])
$pw = Get-Content "[PATH1]"| ConvertTo-SecureString -Key $key
$cred = New-Object System.Management.Automation.PSCredential("[USER1]", $pw)
Invoke-Command -ComputerName [B] -Credential $cred { dir c:\ }

这让我得到了正确的结果(目录列表)。

调用 B > C(相同,除了路径、用户等)

$k = ([KEY])
$p = Get-Content "[PATH2]"| ConvertTo-SecureString -Key $k
$c = New-Object System.Management.Automation.PSCredential("[USER2]", $p)
Invoke-Command -ComputerName [C] -Credential $c { dir c:\ }

这让我得到了正确的结果(目录列表)。

现在,组合调用 A > C:

$key = ([KEY])
$pw = Get-Content "[PATH1]"| ConvertTo-SecureString -Key $key
$cred = New-Object System.Management.Automation.PSCredential("[USER1]", $pw)
Invoke-Command -ComputerName [B] -Credential $cred { $k = ([KEY]); $p = Get-Content "[PATH2]"| ConvertTo-SecureString -Key $k; $c = New-Object System.Management.Automation.PSCredential("[USER2]", $p); Invoke-Command -ComputerName [C] -Credential $c { dir c:\ } }

产生上述错误。

4

1 回答 1

0

尝试使用Invoke-Command参数-Authentication Credssp。这是双跳凭证问题的典型解决方案。

于 2013-11-14T05:31:28.270 回答