Powershell CSV Auswertung in einer Schleife
Liebe Administratoren,
mein Powershell-Erfahrungsschatz wächst stetig aber langsam.
Ich stehe seit einigen Tagen auf dem Schlauch.
Mir liegt eine CSV eines Lieferanten vor, in welcher Artikel entweder nur eine Hauptartikelnummer haben oder auch eine SubArtikelnummer..
Es soll nun in eine neue Datei nur eine Artikelnummer ausgegeben werden. Wenn eine SubArtNr vorhanden ist, ebenjene sonst nur die Hauptartikelnummer.
Jedoch hänge ich nun am folgenden ...
Meine Ausgabe ist bei allen gestarteten Versuchen leer... Kann mir jemand den Fehler aufzeigen?
mein Powershell-Erfahrungsschatz wächst stetig aber langsam.
Ich stehe seit einigen Tagen auf dem Schlauch.
Mir liegt eine CSV eines Lieferanten vor, in welcher Artikel entweder nur eine Hauptartikelnummer haben oder auch eine SubArtikelnummer..
Es soll nun in eine neue Datei nur eine Artikelnummer ausgegeben werden. Wenn eine SubArtNr vorhanden ist, ebenjene sonst nur die Hauptartikelnummer.
Jedoch hänge ich nun am folgenden ...
$Csv_H1_Import = Import-Csv C:\Foo\items_full.csv -UseCulture
$Csv_H1_Import_HerstArtNr = @()
$Csv_H1_Import_HerstArtNrSelect = $Csv_H1_import | select-object product_number, subproduct_number)
$Csv_H1_Import_HerstArtNrSelect | foreach-object {if ($_.subproduct_number) {$Csv_H1_Import_HerstArtNr = $_.subproduct_number} else {$Csv_H1_Import_HerstArtNr = $_.subproduct_number}}
$Csv_H1_Import_HerstArtNr | export-csv c:\foo\artnr.csv -UseCulture -notypeinformation
Invoke-Expression C:\Foo\items_ArtNr.csv
Meine Ausgabe ist bei allen gestarteten Versuchen leer... Kann mir jemand den Fehler aufzeigen?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 304700
Url: https://administrator.de/contentid/304700
Ausgedruckt am: 20.11.2024 um 00:11 Uhr
3 Kommentare
Neuester Kommentar
Hallo Johnny-CGN,
erst mal grundsätzlich, welches Trennzeichen besitzt deine CSV? -UseCulture benutzt ja ein Semikolon wenn das OS auf deutsch eingestellt ist und ein Komma wenn auf Englisch. Passt also das Trennzeichen deiner CSV auf das der Spracheinstellung deines OS?
Ich würde das stattdessen besser so mit einer "Calculated Property" machen:
Jetzt zu deinem Code:
In deinem Code sind mehrere Fehler. Erstens fügst du dem Array dein Nummern nicht hinzu sondern weißt dem Array immer nur einen neuen Wert zu anstatt anzufügen
Und zweitens ist der IF-Vergleicj
Und was soll das
Grüße Uwe
erst mal grundsätzlich, welches Trennzeichen besitzt deine CSV? -UseCulture benutzt ja ein Semikolon wenn das OS auf deutsch eingestellt ist und ein Komma wenn auf Englisch. Passt also das Trennzeichen deiner CSV auf das der Spracheinstellung deines OS?
Ich würde das stattdessen besser so mit einer "Calculated Property" machen:
$Csv_H1_Import = Import-Csv 'C:\Foo\items_full.csv' -UseCulture
$Csv_H1_import | select @{n='ArtNr';e={if($_.subproduct_number -ne ""){$_.subproduct_number}else{$_.product_number}}} | Export-Csv 'C:\Foo\items_ArtNr.csv' -UseCulture -notypeinformation -Encoding UTF8
Jetzt zu deinem Code:
In deinem Code sind mehrere Fehler. Erstens fügst du dem Array dein Nummern nicht hinzu sondern weißt dem Array immer nur einen neuen Wert zu anstatt anzufügen
$Csv_H1_Import_HerstArtNr = $_.subproduct_number
Hier würde man mit += als Operator arbeiten.Und zweitens ist der IF-Vergleicj
if ($_.subproduct_number)
unsicher hier sollte man besser auf einen leeren String prüfen. -ne ""Und was soll das
Invoke-Expression C:\Foo\items_ArtNr.csv
bewirken ... den Aufruf der CSV-Datei? Das ist unüblich und macht man besser mit start-processGrüße Uwe
Zitat von @Johnny-CGN:
Grundsätzliche Frage noch zum Output...
Besteht unter Powershell die Chance, in "Windows ANSI" zu exportieren?
Kannst du mit -Encoding Default (min. PS 3.0) beim Export erreichen Default ist ja ANSI 1252 in Windows.Grundsätzliche Frage noch zum Output...
Besteht unter Powershell die Chance, in "Windows ANSI" zu exportieren?