8

我正在尝试使用调用命令远程执行 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])

当在机器上本地调用该脚本时,它会在没有任何问题的情况下运行并读取配置文件。但是,当我使用调用命令从不同的机器上运行它时,我得到了

“访问路径 '\\192.168.137.1\share\config.xml' 被拒绝”

执行Load方法时抛出的异常。

具有读写权限的每个人都可以访问该文件。应该运行脚本的机器 (.181) 和物理上运行它的机器都具有相同的凭据,因此我不会在调用命令 cmdlet 中传递它们。共享机器 (.1) 具有不同的凭据,但是从 .181 本地调用脚本时,这从来不是问题。

你能指出我正确的方向吗?我坚持这一步,无法自己找到解决方案。我尝试使用 WebClient#DownloadString 方法下载 xml 字符串并为共享机器传递凭据,但它没有帮助。

提前致谢

4

1 回答 1

8

这可能是一个double hop问题。您必须使用 CredSSP 将您的凭据委托给远程计算机。

试试这里提到的解决方案:http: //blogs.msdn.com/b/clustering/archive/2009/06/25/9803001.aspx

于 2011-10-17T15:08:55.883 回答