Powershell Remoting:如何使用单独的参数在多台机器上运行命令?

Powershell Remoting:如何使用单独的参数在多台机器上运行命令?

例如:

假设我有 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 

}

我正在即兴地做这件事,所以请先测试一下!

相关内容