我有一个从 serverA 到 serverB 的 robocoy 批处理文件,它运行良好。
我有一个服务器名称列表。我想将此列表加载到 powershell 数组中,然后枚举此数组并使用路径运行 robocopy。
这是我的工作 robocopy 批处理文件:
ROBOCOPY C:\Websites\ \\serverB\C$\Websites\ /MIR
我想做的是用数组中的值替换“serverB”。我以前从未真正使用过 powershell,所以除了在机器上安装 powershell 之外,我什至不知道从哪里开始;)
理论上,这就是我想要的(伪代码):
$serverNames = ("serverA","serverB", "serverC")
foreach ($server in $serverNames )
{
"ROBOCOPY C:\Websites\ \\" + $server + "\C$\Websites\ /MIR"
}
我想,问题是,我如何从 powershell 执行通常是批处理命令?
谢谢你的帮助!
确保 Robocopy 在路径中。请记住,当前工作不是 PS 中路径的一部分,因此如果 robocopy 在当前工作目录中,请在其前面加上 .\ (.\Robocopy.exe...)。对于可执行文件,您需要在文件名上指定 .exe。
如果您的服务器列表不是太长,您也可以一行(假设 robocopy 在当前工作目录中):
EBGreen 的答案是正确的。但是,如果您只想执行一个字符串,您可以
调用表达式 "ROBOCOPY C:\Websites\ \" + $server + "\C$\Websites\ /MIR"
或者
& "ROBOCOPY C:\Websites\ \" + $server + "\C$\Websites\ /MIR"
或者
cmd /c "ROBOCOPY C:\Websites\" + $server + "\C$\Websites\ /MIR"
@EB格林,
我想我没有足够的积分来评论。我不知道我从 stackoverflow 得到的分数发生了什么...我从服务器故障开始,堆栈中的分数超过 100 个,然后他们下降到 11 个左右。
我无权访问 v1,但至少在 v2 中:PS>get-alias set
CommandType 名称定义 ----------- ---- ---------- 别名集 Set-Variable