例如:
假设我有 10 台服务器(服务器 1-服务器 10)和一个 csv 列表,其中包含服务器名称以及每台服务器的单独文件夹名称/路径。
我如何在每台机器上创建这些文件夹?
a) 打开所有 10 个连接并根据 csv 运行命令?b) 逐一执行
请告诉我最有效的方法
答案1
这非常幼稚,因为没有错误检查等,但它可以满足您的要求。我假设您正在使用带有 WinRM 的 Powershell 2.0。
假设您有一个如下的 CSV 设置:
server,path
server1,c:\path1
server2,c:\path2
server3,c:\path3
解决方案如下:
$csvdata = import-csv .\test.csv
foreach ($row in $csvdata) {
invoke-command $row.server { param($path) mkdir $path } -argumentlist $row.path
}
这里唯一真正奇怪的部分是如何获取传入的路径。通常,invoke-command 中的脚本无法读取您的本地变量。您为其设置一个参数(称为$path
),然后将本地变量$row.path
放入参数列表中 - 这允许远程服务器上的 mkdir 命令使用该$path
变量,并且它可以看到从 CSV 文件传入的内容。
答案2
如果您正在做一些基于 wmi 的事情,那么您可以利用异步调用!
答案3
我的回答完全是错误的,无论如何,如果你没有 psv2 或没有实现 winrm。
$csvdata = 导入-csv.\test.csv
foreach ($csvdata 中的行) {
md \\$row.server\c$\$row.path
}
我正在即兴地做这件事,所以请先测试一下!