Garant 3 Geschrieben 2. August 2022 Melden 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
cj_berlin 1.394 Geschrieben 2. August 2022 Melden Geschrieben 2. August 2022 Importieren, im Speicher anpassen, wieder exportieren. Zitieren
Garant 3 Geschrieben 2. August 2022 Autor Melden 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
cj_berlin 1.394 Geschrieben 2. August 2022 Melden Geschrieben 2. August 2022 Moin, klar, Get-Content liefert Dir ja eine ganze Zeile. Du brauchst Import-CSV. Zitieren
Garant 3 Geschrieben 2. August 2022 Autor Melden 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
BOfH_666 583 Geschrieben 2. August 2022 Melden 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
Garant 3 Geschrieben 2. August 2022 Autor Melden 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
MurdocX 965 Geschrieben 2. August 2022 Melden 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
BOfH_666 583 Geschrieben 2. August 2022 Melden 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
daabm 1.384 Geschrieben 2. August 2022 Melden 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
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.