Импорт-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 и использовать другой разделитель для разделения каждого столбца.
это сработало для моего скрипта: -)