wake-up-neo.com

Import-CSV und Foreach

Ich habe eine große, durch Kommas getrennte CSV-Liste mit IP-Adressen meines Netzwerks, für die ich Abfragen ausführen möchte. Beispiel meiner CSV-Eingabe:

172.168.0.1,172.168.0.2,172.168.0.3,172.168.0.4

Usw.... 

Wenn ich den folgenden Code ausführen, um die Ausgabe zu testen: 

$filepath = "c:\scripts\servers.csv" 
$servers = Import-CSV $filepath -delimiter "," 

Foreach ($server in $servers) {
     write-Host $server

}

Ich bekomme keine Ausgabe, ich denke es liegt daran, dass keine Header angegeben sind. Ich kann natürlich eine Problemumgehung durchführen, die CSV-Datei öffnen und alle Header eingeben. Gibt es andere Wege, um dieses Problem zu lösen?

10
ScriptingBerry

Sie können die Kopfzeilen direkt erstellen (es ist nicht erforderlich, Trennzeichen anzugeben, wenn das Trennzeichen ein Komma ist)

Import-CSV $filepath -Header IP1,IP2,IP3,IP4 | Foreach-Object{
   Write-Host $_.IP1
   Write-Host $_.IP2
   ...
}
20
Shay Levy
$IP_Array = (Get-Content test2.csv)[0].split(",")
foreach ( $IP in $IP_Array){
    $IP
}

Get-content Filename gibt für jede Zeile ein Array von Strings zurück. 

Nur bei der ersten Zeichenfolge teile ich sie basierend auf ",". Ausgeben in $ IP_Array.

$IP_Array = (Get-Content test2.csv)[0].split(",")
foreach ( $IP in $IP_Array){
  if ($IP -eq "2.2.2.2") {
    Write-Host "Found $IP"
  }
}
1
Bye

Lösung ist, Trennzeichen zu ändern.

Inhalt der CSV-Datei -> Hinweis .. Auch Leerzeichen und in Wert

Werte sind 6 niederländische Wörter aap, noot, mies, Piet, Gijs, Jan

Col1;Col2;Col3

a,ap;noo,t;mi es

P,iet;G ,ijs;Ja ,n



$csv = Import-Csv C:\TejaCopy.csv -Delimiter ';' 

Antworten:

Write-Host $csv
@{Col1=a,ap; Col2=noo,t; Col3=mi es} @{Col1=P,iet; Col2=G ,ijs; Col3=Ja ,n}

Es ist möglich, eine CSV-Datei zu lesen und andere Trennzeichen zum Trennen der Spalten zu verwenden.

Es hat für mein Skript funktioniert :-)

0
Jan Swinkels