Garant 3 Geschrieben 2. August 2022 Melden Teilen Geschrieben 2. August 2022 Guten Morgen, ich benötige einen kleinen Denkanstoß. Ein Skript zieht via PowerShell eine Benutzerliste aus dem Verzeichnisdienst und erzeugt eine CSV-Datei. Jetzt möchte ich über eine Vergleichstabelle Inhalte in der CSV-Datei anpassen (z.B. PagerNo 1 = Bremen, PagerNo2 = Hamburg, PagerNo3 = Düsseldorf). Habt ihr eine schnelle Idee, wie ich das am geschicktesten durchführe? Zitieren Link zu diesem Kommentar
cj_berlin 1.329 Geschrieben 2. August 2022 Melden Teilen Geschrieben 2. August 2022 Importieren, im Speicher anpassen, wieder exportieren. Zitieren Link zu diesem Kommentar
Garant 3 Geschrieben 2. August 2022 Autor Melden Teilen Geschrieben 2. August 2022 Bin schon weiter gekommen, hab dennoch ein Problem. Siehe Skript-Snippet unten. Er ersetzt den Inhalt einfach nicht, obwohl in der Spalte 'sn' die Nachnamen entsprechend geführt werden. Hab ich einen Denkfehler? $IT_Gruppe = @( 'Meyer', 'Schulze') (Get-Content $original_file) | Foreach-Object { if($_.sn -contains $IT_Gruppe) {$_.company = 'Test'} } | Set-Content $original_file Zitieren Link zu diesem Kommentar
cj_berlin 1.329 Geschrieben 2. August 2022 Melden Teilen Geschrieben 2. August 2022 Moin, klar, Get-Content liefert Dir ja eine ganze Zeile. Du brauchst Import-CSV. Zitieren Link zu diesem Kommentar
Garant 3 Geschrieben 2. August 2022 Autor Melden Teilen Geschrieben 2. August 2022 (bearbeitet) Ah, okay. Leider erstellt er weiterhin eine 0kb CSV. Import-Csv -Path $original_file -Delimiter ";" -Encoding UTF8 | ForEach-Object { if($_.sn -match $IT_Gruppe) {$_.company = 'Test'} } | Export-CSv $destination_file -NoTypeInformation bearbeitet 2. August 2022 von MurdocX Code in ein Codeblock eingefügt. Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 2. August 2022 Melden Teilen Geschrieben 2. August 2022 (bearbeitet) Kannst Du bitte den Code hier im Forum als Code formatieren? Du musst die Werte nicht nur anpassen, Du musst sie auch einmal ausgeben, damit sie in der Pipeline landen können. Wenn Du die anderen Werte auch in der Ausgabe haben willst, musst Du auch noch einen else-Zweig hinzufügen. Also quasi sowas hier ... Import-Csv -Path $original_file -Delimiter ";" -Encoding UTF8 | ForEach-Object { if ($_.sn -match $IT_Gruppe) { $_.company = 'Test' $_ } else { $_ } } | Export-CSv $destination_file -NoTypeInformation bearbeitet 2. August 2022 von BOfH_666 Zitieren Link zu diesem Kommentar
MurdocX 953 Geschrieben 2. August 2022 Melden Teilen Geschrieben 2. August 2022 Habs angepasst. 1 Zitieren Link zu diesem Kommentar
Garant 3 Geschrieben 2. August 2022 Autor Melden Teilen Geschrieben 2. August 2022 (bearbeitet) Ahh, jetzt geht es. :) Danke. Allerdings klappt es nicht mit der Variablenliste, sondern nur beim Vergleichen, wenn ich ein Wert dahinterlege. Muss ich das ggf. anders aufbauen? $IT_Gruppe = @( 'Meyer', 'Schulze') bearbeitet 2. August 2022 von Garant Zitieren Link zu diesem Kommentar
MurdocX 953 Geschrieben 2. August 2022 Melden Teilen Geschrieben 2. August 2022 vor einer Stunde schrieb BOfH_666: Kannst Du bitte den Code hier im Forum als Code formatieren? @Garant bitte beachten. Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 2. August 2022 Melden Teilen Geschrieben 2. August 2022 vor 38 Minuten schrieb Garant: Allerdings klappt es nicht mit der Variablenliste, sondern nur beim Vergleichen, wenn ich ein Wert dahinterlege. Muss ich das ggf. anders aufbauen? Häh? Mal benutzt Du "-contains", in Deinem letzten Code-Schnipsel hast Du "-match" benutzt ... und dann postest Du nur ein Teil Deines Codes ... bitte im Hinterkopf behalten - wir können Deinen Bildschirm nicht sehen und wir wir können nicht in Deinen Kopf gucken. Wenn Du eine Liste mit Elementen hast und benutzt "-contains", um zu prüfen, ob ein gegebener Wert in dieser Liste enthalten ist, muss dieser Wert exakt einem Element entsprechen, um einen positiven Rückgabewert zu erhalten. Zitieren Link zu diesem Kommentar
daabm 1.366 Geschrieben 2. August 2022 Melden Teilen Geschrieben 2. August 2022 (bearbeitet) Ein Grund mehr, nicht mit der Pipeline zu arbeiten... $Data = Import-CSV irgendwas.csv foreach ( $value in $Data ) { # machirgendwas mit $value } $Data | Export-CSV irgendwasanderes -noTypeInformation bearbeitet 2. August 2022 von daabm Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.