您好,
我们拥有数百台虚拟机的大型环境。在我们的服务部署期间,我们需要将一些文件从build drop复制到所有这些机器。
所以,我们有:
Powershell用作脚本语言。类似的东西:
$buildDrop = "\\sourceMachine\Build"
$machineTarget = "targetMachine"
Invoke-Command -ComputerName $machineTarget -ArgumentList $buildDrop -ScriptBlock {
Param( $buildDrop )
Test-Path $buildDrop # Will return False
}
这种方法导致double hop issue,由于在XP和2k3机器上不支持CredSSP功能,我无法解决这个问题。在用户计算机上调用的副本会导致性能瓶颈(数据通过用户计算机传输)。
有没有办法让所有目标机器始终显示构建丢弃? 可能以某种方式将它们添加到受信任的位置或类似的东西?
提前致谢!
答案 0 :(得分:7)
我找到了适用于我们环境的解决方案。
如果没有Cred-SSP,则无法通过双跃点传输凭据,但您可以在没有第一跳的情况下在目标计算机上运行某些内容。
最简单的方法是将 psexec 与 -s 标志一起使用(在系统帐户中运行远程进程),最终字符串是这样的:
psexec \\someHost -s robocopy "\\stagingHost\Staging" "\\someHost\C$\Staging" /MIR
你也可以用同样的方式启动一些PS脚本,只需确保远程机器上的script execution is allowed:
psexec \\someHost -s "\\stagingHost\Staging\Script.ps1" SomeArg1 SomeArg2
查看this 文章,了解psexec的工作原理。 虽然服务于someHost
答案 1 :(得分:1)
CredSSP 是双跳问题的解决方案。
从等式中删除用户的桌面。建立一个合适的构建和构建服务器上的部署服务器/服务/应用程序,并从那里管理所有内容。 RedGate有一款新产品可能会对此有很大帮助,Deployment Manager
答案 2 :(得分:0)
如果您使用的机器可以到达其他机器,只需使用您的机器复制文件:
$computers | % {copy '\\servershare\build' "\\$_\c`$\Temp"}
$sb = {C:\Temp\Dosomething.txt args[0]}
$computers | % {Invoke-command -comp $_ -scriptBlock $sb -argumentlist $arg}