none
Felder in CSV Datei automatisch modifizieren RRS feed

  • Frage

  • Hallo zusammen,

    ich würde gerne Felder aus einer CSV Datei mit einem Powershell Script modifizieren lassen.

    Genauer gesagt, ich habe eine CSV Datei und die lese ich ein mit beispielsweise import-CSV und möchte eine ganze Spalte abarbeiten lassen, wenn dort in Spalte 2 das Feld "X" heißt soll in Spalte 3 der Wert "Test1" geschrieben werden. Wenn aber in Spalte 2 das Feld "Y" heißt, soll in Spalte 3 der Wert "Test2" geschrieben werden.

    Ich weiß nicht wie die IF Bedingung angewendet werden soll.

    Ich bin für jede Hilfe dankbar.

    Gruß

    Lucky

    Freitag, 10. August 2012 07:44

Antworten

  • Hier ist ein Beispiel:

    $csv = Import-Csv d:\test.csv 
    
    foreach ($row in $csv) {
    	if ($row.Spalte2 -eq "x") { $row.Spalte3 = "Test1" }
    	 elseif ($row.Spalte2 -eq "y") { $row.Spalte3 = "Test2" }
    	
    }
    
    $csv | Export-Csv d:\test_neu.csv -NoTypeInformation

    "Spalte2","Spalte3" etc. musst du gegen die richtigen Spaltenüberschriften austauschen.

    Grüße, Denniver


    Blog: http://bytecookie.wordpress.com

    Hilf mit und markiere hilfreiche Beiträge als "Hilfreich" und Beiträge die deine Frage ganz oder teilweise beantwortet haben als "Antwort".

    Freitag, 10. August 2012 12:10
    Moderator
  • Hallo Lucky,

    das gleiche Problem hatte ich auch mal,
    du musst die erste Zeile so definieren:

    $csv = Import-Csv d:\export.csv -Delimiter ";"

    weil Import-Csv als Default-delimiter nur ein normales Komma benutzt.

    Gruß Speedy






    Montag, 13. August 2012 06:39

Alle Antworten

  • Hier ist ein Beispiel:

    $csv = Import-Csv d:\test.csv 
    
    foreach ($row in $csv) {
    	if ($row.Spalte2 -eq "x") { $row.Spalte3 = "Test1" }
    	 elseif ($row.Spalte2 -eq "y") { $row.Spalte3 = "Test2" }
    	
    }
    
    $csv | Export-Csv d:\test_neu.csv -NoTypeInformation

    "Spalte2","Spalte3" etc. musst du gegen die richtigen Spaltenüberschriften austauschen.

    Grüße, Denniver


    Blog: http://bytecookie.wordpress.com

    Hilf mit und markiere hilfreiche Beiträge als "Hilfreich" und Beiträge die deine Frage ganz oder teilweise beantwortet haben als "Antwort".

    Freitag, 10. August 2012 12:10
    Moderator
  • Hallo Denniver,

    irgendwie schreibt das Script nichts in meine Spalte rein und es verhunzt mein Dateiformat obwohl ich angegeben habe:

    -encoding "unicode" -NoTypeInformation -Delimiter ";" 

    Hast Du noch einen Tipp?

    Danke und Gruß

    Lucky


    Lucky

    Freitag, 10. August 2012 15:23
  • Poste mal einen Auszug des der originalen und der "verhunzten" Csv. Ausserdem bitte das von dir angepasste Skript.

    Grüße, Denniver


    Blog: http://bytecookie.wordpress.com

    Hilf mit und markiere hilfreiche Beiträge als "Hilfreich" und Beiträge die deine Frage ganz oder teilweise beantwortet haben als "Antwort".

    Freitag, 10. August 2012 15:37
    Moderator
  • Hier ist die Original CSV:

    "displayname";"l";"company";"co";"department";"mail";"facsimileTelephoneNumber";"Givenname";"title";"surname";"mobile";"physicalDeliveryOfficeName";"st";"streetAddress";"telephoneNumber";"sAMAccountName";"postalCode";"enabled";"Manager";"Incident State";"Deployment State"
    "Postmaster";;;;;"ad-setup@microsoft.com";;;;;;;;;;"ad-setup";;"True";;"Operational";"Microsoft.ActiveDirectory.Management.ADPropertyValueCollection"
    "Müller, Hans";"London";"Microsoft";"Italien";"IT-Services";"Hans.Mueller@microsoft.com";;"Hans";;"Müller";;"London";"BY";"Teststr. 1";"1234567";"user1";"12345";"False";"Meier, Sepp";"Operational";"Microsoft.ActiveDirectory.Management.ADPropertyValueCollection"
    

    Hier die verhunzte CSV:

    "displayname;""l"";""company"";""co"";""department"";""mail"";""facsimileTelephoneNumber"";""Givenname"";""title"";""surname"";""mobile"";""physicalDeliveryOfficeName"";""st"";""streetAddress"";""telephoneNumber"";""sAMAccountName"";""postalCode"";""enabled"";""Manager"";""Incident State"";""Deployment State"""
    "Postmaster;;;;;""ad-setup@shs-viveon.com"";;;;;;;;;;""ad-setup"";;""True"";;""Operational"";""Microsoft.ActiveDirectory.Management.ADPropertyValueCollection"""
    "Müller, Hans;""London"";""Microsoft"";""Italien"";""IT-Services"";""Hans.Mueller@microsoft.com"";;""Hans"";;""Müller"";;""London"";""BY"";""Teststr. 1"";""1234567"";""user1"";""12345"";""False"";""Meier"

    Hier das Script:

    $csv = Import-Csv d:\export.csv 
    
    foreach ($row in $csv) {
    	if ($row.enabled -eq "True") { $row."Deployment State" = "Production" }
    	 elseif ($row.enabled -eq "False") { $row."Deployment State" = "Inactive" }
    	
    }
    
    $csv | Export-Csv d:\test.csv -encoding "unicode" -NoTypeInformation -Delimiter ";" 
    

    Vielen Dank.

    Gruß


    Lucky

    Samstag, 11. August 2012 14:29
  • Hallo Lucky,

    das gleiche Problem hatte ich auch mal,
    du musst die erste Zeile so definieren:

    $csv = Import-Csv d:\export.csv -Delimiter ";"

    weil Import-Csv als Default-delimiter nur ein normales Komma benutzt.

    Gruß Speedy






    Montag, 13. August 2012 06:39
  • Damit alle Probleme beseitigt?

    Grüße, Denniver


    Blog: http://bytecookie.wordpress.com

    Hilf mit und markiere hilfreiche Beiträge als "Hilfreich" und Beiträge die deine Frage ganz oder teilweise beantwortet haben als "Antwort".

    Montag, 13. August 2012 08:43
    Moderator
  • Hallo Speedy,

    ja super, vielen Dank!!! Es passt perfekt!!

    Ihr seid Spitze.

    Gruß

    Lucky



    Montag, 13. August 2012 19:09
  • Hallo Denniver,

    ja super, vielen Dank!!! Es passt alles perfekt!!

    Ihr seid Spitze.

    Gruß


    Lucky

    Montag, 13. August 2012 19:10