我正在尝试使用invoke-command远程执行powershell脚本。该脚本依赖于可通过本地网络获得的配置文件。脚本以下列方式调用:
Invoke-Command -ComputerName 192.168.137.181 -FilePath c:\scripts\script.ps1 -ArgumentList \\192.168.137.1\share\config.xml
您可以看到的配置是一个xml文件,它使用以下命令加载:
$xml = New-Object XML
$xml.Load(args[0])
当在机器上本地调用脚本时,它会运行任何问题并读取配置文件。但是,当我使用invoke命令从不同的机器运行它时,我得到了
“拒绝访问路径'\\ 192.168.137.1 \ share \ config.xml'”
异常,执行Load方法时抛出。
具有读写权限的每个人都可以访问该文件。 应该运行脚本的机器(.181)和运行它的机器都具有相同的凭据,因此我不会在invoke-command cmdlet中传递它们。 共享计算机(.1)具有不同的凭据,但从.181本地调用脚本时,这从来不是问题。
你能指出我正确的方向吗?我坚持这一步,自己无法找到解决方案。我尝试使用WebClient#DownloadString方法下载xml字符串并传递共享计算机的凭据,但它没有帮助。提前致谢
答案 0 :(得分:9)
可能是double hop
问题。您必须使用CredSSP将您的凭据委派给远程计算机。
尝试此处提到的解决方案:http://blogs.msdn.com/b/clustering/archive/2009/06/25/9803001.aspx