This is very naive in that there is no error checking/etc., but it does what you want. I'm assuming here that you are using Powershell 2.0 with WinRM.
Assuming you have a CSV setup like this:
server,path
server1,c:\path1
server2,c:\path2
server3,c:\path3
The solution would be like so:
$csvdata = import-csv .\test.csv
foreach ($row in $csvdata) {
invoke-command $row.server { param($path) mkdir $path } -argumentlist $row.path
}
The only really weird part here is how you get the path passed in. Typically, the script in invoke-command cannot read your local variables. You setup a param for it (called $path
) and then put the local variable $row.path
into the argument list - this allows the mkdir command on the remote servers to use the $path
variable and it sees what was passed in from the CSV file.