Il seguente snippet nasce dalla richiesta di un amico: per automatizzare una attività aveva la necessità eseguire più volte un comando, leggendo i singoli parametri da un file di testo in formato CSV (campi separati da virgola).
Il file parameters.csv contiene le seguenti informazioni:
- indirizzo IP
- username
- password
Ecco lo script:
$file = Get-Content "C:\parameters.csv" foreach($row in $file) { $parameters = $row.Split(","); $ipaddress = $parameters[0]; $username = $parameters[1]; $password = $parameters[2]; echo "Ip address: $ipaddress`tusername: $username`tpassword: $password"; } |
foreach($row in $file) {
$parameters = $row.Split(",");
$ipaddress = $parameters[0];
$username = $parameters[1];
$password = $parameters[2];
echo "Ip address: $ipaddress`tusername: $username`tpassword: $password";
}
Il cmdlet Get-Content restituisce un array contenente le singole righe del file. Il successivo ciclo foreach viene eseguito per ogni elemento di tale array e – ad ogni esecuzione – memorizza nella variabile $row una riga del file.
Il metodo Split dell’oggetto string divide la stringa in elementi utilizzando come separatore il carattere (in questo caso la virgola) passato come parametro e restituisce un array contenente i vari elementi.
Infine i singoli elementi sono memorizzati in variabili (il primo elemento di un array ha indice 0) e il loro contenuto viene stampato a video: