因此,在机器X上,我以CredSSP身份使用Creds A连接到Y,然后通过Cred,我想在机器Y上使用Cred启动一个作业。
虽然我可以RDP到机器Y作为X,并成功地在本地创建一个作业作为Y,当我使用remoting这样做的时候。我得到一个错误。以下是按问题复制的示例代码
$sb1 = {param($cred) $cred ; write-host "started" ; start-job -Credential $cred -ScriptBlock {"yo"} | Wait-Job | Receive-Job }
$j = invoke-command -ComputerName $compy -Credential $creda -Authentication CredSSP -ScriptBlock $sb1 -argumentlist $credb它在接收任务上出错,大概过了30秒左右(可能超时了),我在y上的任务管理器中看不到任何创建的进程(当我在scriptblock中使用"yo“休眠时)。
下面是返回的错误
[localhost] The background process reported an error with the following message: .
+ CategoryInfo : OpenError: (:) [Receive-Job], PSRemotingTransportException
+ FullyQualifiedErrorId : PSSessionStateBroken异常的扩展是“后台进程报告了一个错误,消息如下:”。并且没有内部异常。
发布于 2011-09-02 23:49:04
据我所知,当删除远程脚本中Start-Job的-Credential参数时,一切都很顺利。
当我们希望我们的远程会话拥有对网络资源的完全访问权限时,可以使用CredSSP。这就是所谓的双重希望情景。
在您在计算机A上构建$credb的情况下,此变量包含B的凭据,但是当您将$credb作为参数提供给远程脚本时,它将被序列化,并且我打赌第二台计算机无法使用凭据的加密解析。
我尝试在服务器计算机上重新创建凭据,但也失败了。
发布于 2012-05-11 09:29:48
要使用credssp开关,需要将远程计算机配置为允许该开关。但是,即使启用了该功能,也不能简单地将凭据对象传递到远程计算机。你可以用下面的代码轻松地测试它:
$a="hello world"
Will work: Invoke-Command -ScriptBlock {write-host "hello world"} -session $(get-pssession 2)
Will break: Invoke-Command -ScriptBlock {write-host $a} -session $(get-pssession 2)您可以做的是使用ConvertFrom-SecureString创建一个安全字符串,并将其作为变量传递。
https://stackoverflow.com/questions/7273789
复制相似问题