Импорт-CSV и Foreach

у меня есть огромный разделенный запятыми CSV-список с IP-адресами моей сети, с которыми я хочу запускать запросы. Пример моего ввода CSV:

172.168.0.1,172.168.0.2,172.168.0.3,172.168.0.4

Etc....

когда я запускаю следующий код для проверки вывода:

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

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

}

у меня нет выходных, я думаю, это потому, что нет указанных заголовков. Я, очевидно, могу сделать обходной путь и открыть CSV-файл и ввести все заголовки. Есть ли другие способы решить эту проблему?

3 ответов


вы можете создавать заголовки на лету (не нужно указывать разделитель, когда разделитель является запятой):

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 возвращает массив строк для каждой строки.

только в первой строке я разделил его на основе",". Сброс его в $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"
  }
}

решение заключается в изменении разделителя.

содержимое файла csv - > Примечание .. Также пробел и, в значении

значения: 6 голландских слов 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 ';' 

ответ:

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

можно прочитать файл CSV и использовать другой разделитель для разделения каждого столбца.

это сработало для моего скрипта: -)