2013-03-02 43 views
8

Ağımdaki IP sorguları ile CSV listesini ayırmak istediğim çok sayıda virgül var. Benim CSV girişi örneği: VbImport-CSV ve Foreach

172.168.0.1,172.168.0.2,172.168.0.3,172.168.0.4 

.... ben çıkış için sınamak için aşağıdaki kodu çalıştırdığınızda

: Hiçbir çıktı almak

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

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

} 

, ben çünkü düşünüyorum başlık belirtilmemiş. Açıkçası bir geçici çözüm yapabilir ve CSV dosyasını açabilir ve tüm üstbilgileri yazabilirim. Bunu çözmenin başka yolları var mı? (Ayırıcı virgül olduğunda sınırlayıcı belirtmek gerek yoktur)

cevap

15

Sen anında başlıklarını oluşturabilirsiniz:

Import-CSV $filepath -Header IP1,IP2,IP3,IP4 | Foreach-Object{ 
    Write-Host $_.IP1 
    Write-Host $_.IP2 
    ... 
} 
+0

:-) senaryom için çalışmış (en azından ben yorumlamak nasıl onun vb ...) Cevabınız için – rene

+0

sayesinde, Gerçekten onu takdir ederim. Ne yazık ki, CSV hepsi aynı satırda yaklaşık 100 IP adresi içeriyor, bu yüzden 100 başlık belirtmek zorunda mıyım? – ScriptingBerry

+0

"IP" adlı 1 başlık oluşturdum ve altındaki tüm IP adresleri yerleştirdim. Geçici çözüm, ama şimdi çalışıyor. – ScriptingBerry

1
$IP_Array = (Get-Content test2.csv)[0].split(",") 
foreach ($IP in $IP_Array){ 
    $IP 
} 

Get-içerik Dosya adı her satır için dizelerden oluşan bir dizi döndürür.

Yalnızca ilk dizgede "," temel alarak ayırırım. $ IP_Array içine boşaltma.

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

Bu, basit CSV dosyaları için işe yararken, virgüllerin alan değerlerinin bir parçası olduğu yerde başarısız olur. – haliphax

+0

Neden virgülle ayrılmış bir dosyada alan adının bir parçası olarak bir virgül var? – PositriesElectron

0

Çözüm Ayırıcıyı değiştirmektir.

: - csv dosyasının

İçerik değerindeki> Not .. Ayrıca uzay ve

Değerler 6 Hollandalı kelime 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 ';' 

Cevap olan

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

Bir CSV dosyasını okumak ve her sütunu ayırmak için diğer Ayırıcı'yı kullanmak mümkündür.

Ben OP tüm ip Kullanıcı aynı hat üzerinde bir dosya vardır bekliyoruz