Isso é muito ingênuo, pois não há verificação de erros / etc., mas faz o que você quer. Estou assumindo aqui que você está usando o Powershell 2.0 com o WinRM.
Supondo que você tenha uma configuração de CSV como esta:
server,path
server1,c:\path1
server2,c:\path2
server3,c:\path3
A solução seria assim:
$csvdata = import-csv .\test.csv
foreach ($row in $csvdata) {
invoke-command $row.server { param($path) mkdir $path } -argumentlist $row.path
}
A única parte realmente estranha aqui é como você obtém o caminho passado. Normalmente, o script em invoke-command não pode ler suas variáveis locais. Você configura um parâmetro para ele (chamado $path
) e depois coloca a variável local $row.path
na lista de argumentos - isso permite que o comando mkdir nos servidores remotos use a variável $path
e veja o que foi transmitido de o arquivo CSV.