8

你好,

我们有拥有数百个虚拟机的大型环境。在我们的服务部署期间,我们需要将一些文件从 build drop 复制到所有这些机器上。

所以,我们有:

  • 执行部署脚本的用户机器
  • 构建放置机器,文件所在的位置
  • 目标机

Powershell 用作脚本语言。就像是:

$buildDrop     = "\\sourceMachine\Build"
$machineTarget = "targetMachine"

Invoke-Command -ComputerName $machineTarget -ArgumentList $buildDrop -ScriptBlock {
     Param( $buildDrop )
     Test-Path $buildDrop # Will return False
}

这种方法会导致双跳问题,由于 XP 和 2k3 机器不支持 CredSSP 功能,我无法解决该问题。在用户机器上调用的副本会导致性能瓶颈(数据通过用户机器传输)。

有没有办法让所有目标机器都可以看到构建丢弃?可能以某种方式将它们添加到受信任的位置或类似的东西?

提前致谢!

4

3 回答 3

7

我找到了适用于我们环境的解决方案。

在没有 Cred-SSP 的情况下,不可能通过双跃点传输凭据,但您可以在没有第一跃点的情况下在目标机器上运行某些东西。

最简单的方法是使用带有-s标志的psexec(在系统帐户中运行远程进程),最终字符串是这样的:

psexec \\someHost -s robocopy "\\stagingHost\Staging" "\\someHost\C$\Staging" /MIR

您也可以以相同的方式启动一些 PS 脚本,只需确保允许在远程机器上执行脚本:

psexec \\someHost -s "\\stagingHost\Staging\Script.ps1" SomeArg1 SomeArg2

查看这篇文章,了解 psexec 的工作原理。在 someHost 上服务时

于 2013-03-29T11:42:43.640 回答
1

CredSSP双跳问题的解决方案。

从等式中删除用户的桌面。在您的构建服务器上设置适当的构建和部署服务器/服务/应用程序并从那里管理所有内容。RedGate 有一个新产品,部署管理器可能会对您有很大帮助

于 2013-03-06T13:40:05.777 回答
0

如果您使用的机器可以访问其他机器,只需使用您的机器复制文件:

$computers | % {copy '\\servershare\build' "\\$_\c`$\Temp"}
$sb = {C:\Temp\Dosomething.txt args[0]}
$computers | % {Invoke-command -comp $_ -scriptBlock $sb -argumentlist $arg} 
于 2013-03-08T09:33:14.397 回答