J'ai une énorme liste CSV séparée par des virgules avec les adresses IP de mon réseau sur laquelle je veux lancer des requêtes. Exemple de mon entrée CSV:
172.168.0.1,172.168.0.2,172.168.0.3,172.168.0.4
Etc....
Lorsque je lance le code suivant pour tester la sortie:
$filepath = "c:\scripts\servers.csv"
$servers = Import-CSV $filepath -delimiter ","
Foreach ($server in $servers) {
write-Host $server
}
Je ne reçois aucune sortie, je pense que c'est parce qu'il n'y a pas d'en-tête spécifié. Je peux évidemment faire une solution de contournement et ouvrir le fichier CSV et taper tous les en-têtes. Y a-t-il d'autres moyens de résoudre ce problème?
Vous pouvez créer les en-têtes à la volée (inutile de spécifier le délimiteur lorsque celui-ci est une virgule):
Import-CSV $filepath -Header IP1,IP2,IP3,IP4 | Foreach-Object{
Write-Host $_.IP1
Write-Host $_.IP2
...
}
$IP_Array = (Get-Content test2.csv)[0].split(",")
foreach ( $IP in $IP_Array){
$IP
}
Get-content Filename renvoie un tableau de chaînes pour chaque ligne.
Sur la première chaîne uniquement, je l'ai divisé en fonction de ",". Dumping dans $ 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"
}
}
La solution est de changer de délimiteur.
Contenu du fichier csv -> Note .. Aussi espace et valeur
Les valeurs sont 6 mots néerlandais 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 ';'
Réponse:
Write-Host $csv
@{Col1=a,ap; Col2=noo,t; Col3=mi es} @{Col1=P,iet; Col2=G ,ijs; Col3=Ja ,n}
Il est possible de lire un fichier CSV et d'utiliser un autre délimiteur pour séparer chaque colonne.
Cela a fonctionné pour mon script :-)