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"; } |
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:
Buongiorno ho trovato il vostro articolo molto interessante e utile per un lavoro che devo fare, volevo chiedere un aiuto per fare in modo che il risultato di questa funzione mi restituisca il risultato in un file anzichè a video.
Avreste la possibilità di darmi qualche indicazione al riguardo per favore?
Grazie
buongiorno manuele, non mi è chiara la necessità: il mio esempio fa il parsing di un file, tu vuoi che anche l’output sia scritto su un (secondo) file? In tal caso basta un redirect (>)