none
Worter in CSV Datei mit PowerShell ändern RRS feed

  • Frage

  • Hallo 

    ich möchte bestimmte Wörter in CSV-Datei ädern aber es klappt nicht. 


    $BenutzerListe = C:\Users\Administrator\Documents\Benutzer.csv
    $myPatern = "Microsoft.ActiveDirectory.Management.ADPropertyValueCollection"
    $meinPassword = "Pa$$wort"
    
    Get-Content -Path $BenutzerListe | foreach {
        if($_ -match $myPatern)
        {
            $_ -replace $myPatern, "$meinPassword"
        }
      }
    
    
    
    

    Und Die Fehlermeldung auch 

    Get-Content : Cannot bind argument to parameter 'Path' because it is null.
    At line:5 char:19
    + Get-Content -Path $BenutzerListe | foreach {
    +                   ~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidData: (:) [Get-Content], ParameterBindingValidationException
        + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.GetContentCommand

    Anscheinend wird die Datei nicht gelesen. 

    Wie behebe ich diese Fehlermeldung? 

    Donnerstag, 17. Dezember 2020 17:48

Antworten

  • Moin,

    *** PowerShell lernen! Wir haben nicht mehr 2007, die Möglichkeiten sind vielfältig, und viele sind auch kostenlos. Channel9, andere Videoportale, die Seite von Kevin Marquette oder vom Scripting Guy... Oder Du gehst halt zum Kurs, das Geld ist gut investiert ;-) ***

    Export-CSV nimmt ein Array von Objekten mit jeweils den gleichen Eigenschaften, und Du machst das Ersetzen ja nicht in strukturierten Daten, sondern Zeile für Zeile einfach im Text. Dann musst Du auch kein Export-CSV verwenden, sondern einfach Set-Content, und auch das nicht in der Schleife, sondern danach.


    Evgenij Smirnov

    http://evgenij.smirnov.de

    • Als Antwort markiert Arbeiter Freitag, 18. Dezember 2020 15:13
    Donnerstag, 17. Dezember 2020 19:05

Alle Antworten

  • Dein Fehler liegt bereits in der allerersten Zeile. Schließe den Pfad in Anführungszeichen ein.

    Der nächste Fehler wird dann beim Replace kommen. Dein Pattern wird nämlich als regulärer Ausdruck interpretiert.

    $meinPassword muss nicht in Anführungszeichen, denn es ist ja bereits ein String.


    Evgenij Smirnov

    http://evgenij.smirnov.de

    Donnerstag, 17. Dezember 2020 18:18
  • Vielen Danke,

    das wird ersetzt aber wird nicht gespeichert. Ich habe es so versucht zu speichern 

    $_ -replace $myPatern, $meinPassword | export-csv -path C:\Users\Administrator\Documents\Benutzer.csv

    Aber es ging schief. Alles wird gelöscht. 

    Wie kann ich ersetze in das Datei wieder Speichern? 

    Das Password muss ich auch masken, das kann ich im Internet gucken. 

    Donnerstag, 17. Dezember 2020 18:32
  • Moin,

    *** PowerShell lernen! Wir haben nicht mehr 2007, die Möglichkeiten sind vielfältig, und viele sind auch kostenlos. Channel9, andere Videoportale, die Seite von Kevin Marquette oder vom Scripting Guy... Oder Du gehst halt zum Kurs, das Geld ist gut investiert ;-) ***

    Export-CSV nimmt ein Array von Objekten mit jeweils den gleichen Eigenschaften, und Du machst das Ersetzen ja nicht in strukturierten Daten, sondern Zeile für Zeile einfach im Text. Dann musst Du auch kein Export-CSV verwenden, sondern einfach Set-Content, und auch das nicht in der Schleife, sondern danach.


    Evgenij Smirnov

    http://evgenij.smirnov.de

    • Als Antwort markiert Arbeiter Freitag, 18. Dezember 2020 15:13
    Donnerstag, 17. Dezember 2020 19:05
  • Agromnaja  spaciba :)

    Es funktioniert. 

    Ich werde PowerShell lernen aber jetzt habe ich keine Zeit leider. 

    Ich habe noch ein Problem in foreach Schleife Funktion  aufzurufen, Wahrscheinlich werde ich noch mal posten heute. 

    Übrigens ich arbeite nicht. 

    Donnerstag, 17. Dezember 2020 20:42