2

For example:

Lets say i have 10 servers (Server 1-Server10) and a csv list where i have the servernames and a individual Foldername/Path for each server.

How would i create these Folders on each machine?

a) Open all 10 connections and run a command based on the csv ? b) stepping through 1by1

Please point me to the most effective way

icnivad
  • 327
  • 3
  • 12

3 Answers3

3

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.

MattB
  • 11,124
  • 1
  • 29
  • 36
0

if your doing something thats wmi based then you can utilize async calls!

0

my answer was completely off base, anyway if you don't have psv2 or don't implement winrm.

$csvdata = import-csv .\test.csv

foreach ($row in $csvdata) {

md  \\$row.server\c$\$row.path 

}

I'm doing this off the top of my head so please test this first!

tony roth
  • 3,844
  • 17
  • 14