Powershellarraysrobocopy

我有一个batch file,从serverA到serverB做一个robocoy,它工作得很好。

我有一个服务器名称列表。 我想将这个列表加载到一个powershell数组中,然后枚举这个数组,然后使用path运行这个robocopy。

这是我工作的robocopybatch file:

ROBOCOPY C:\Websites\ \\serverB\C$\Websites\ /MIR 

我想要做的是用数组中的值replace“serverB”。 我从来没有真正使用PowerShell之前,所以我甚至不知道从哪里开始,除了在机器上安装PowerShell;)

理论上,这是我想要的(psudo-code):

 $serverNames = ("serverA","serverB", "serverC") foreach ($server in $serverNames ) { "ROBOCOPY C:\Websites\ \\" + $server + "\C$\Websites\ /MIR" } 

我想,问题是,如何执行什么通常是从PowerShell的批处理命令?

谢谢你的帮助!

 $serverNames = ("serverA","serverB", "serverC") foreach ($server in $serverNames ) { ROBOCOPY.exe C:\Websites\ \\$server\C$\Websites\ /MIR } 

确保Robocopy在path中。 请记住,当前的工作不是PS中的path的一部分,因此如果robocopy在当前工作目录中,请使用。\(。\ Robocopy.exe …)作为前缀。 对于可执行文件,您需要在文件名上指定.exe文件。

如果你的服务器列表不是太长,你也可以把它列出来(这个假定robocopy在当前工作目录中):

 ("serverA","serverB", "serverC") | %{.\Robocopy.exe C:\Websites\ \\$_\Websites\ /MIR} 

EBGreen的答案是正确的。 但是,如果你只想执行一个string,你可以

Invoke-Expression“ROBOCOPY C:\ Websites \\”+ $ server +“\ C $ \ Websites \ / MIR”

要么

&“ROBOCOPY C:\ Websites \ \”+ $ server +“\ C $ \ Websites \ / MIR”

要么

cmd / c“ROBOCOPY C:\ Websites \ \”+ $ server +“\ C $ \ Websites \ / MIR”

@EBGreen,

我没有足够的评论我猜。 我不知道从stackoverflow发生了什么事…我从stackfaultstore开始,超过100点,然后他们下降到11左右。

我没有访问v1,但在v2中至less:PS> get-alias设置

CommandType名称定义———– —- ———- Alias Set Set-Variable