none
Dubletten aus einem PSObject vollstaendig entfernen RRS feed

  • Frage

  • Hallo zusammen,

    als Beispiel habe ich hier folgendes kleines Script, welches ein PSObject erstellt und dieses mit Daten befüllt:

    $Objects = @(
        "Hans;Muster;Testweg;1"
        "Goerg;Mueller;Hauptstrasse;13"
        "Ida;Hansen;Berliner Ring;13"
        "Hugo;Klemmerle;Hindenburgstrasse;98"
        "Heinz;Klug;Ringweg;102"
        )
    
    # Erstelle ein "System.Collections.Generic.List" Objekt, in welchem später die Daten gespeichert werden sollen...
    $Adressen = New-Object -TypeName System.Collections.Generic.List[Object]
    
    foreach ($Object in $Objects)
        {
        $Object = $Object.Split(";")
        $Adressen.Add((New-Object PSObject -Property @{ Vorname="$($Object[0])"; Nachname="$($Object[1])"; Strasse="$($Object[2])"; Hausnummer="$($Object[3])" }))
        }
    
    $Adressen | Sort-Object -Property Vorname | Format-Table -Property Vorname, Nachname, Strasse, Hausnummer

    Das Ergebnis sieht so aus:

    Vorname Nachname  Strasse           Hausnummer
    -------     --------       -------            ----------
    Goerg     Mueller        Hauptstrasse        13        
    Hans      Muster         Testweg               1         
    Heinz     Klug             Ringweg              102       
    Hugo      Klemmerle   Hindenburgstrasse 98        
    Ida         Hansen        Berliner Ring        13   

    Ich habe nun folgendes Problem:

    Ich möchte in dem PSObject Array alle Datensätze löschen, bei welchen z. B. in der Spalte "Hausnummer"  zwei oder mehrfach der gleiche Wert existiert. Es soll also kein Datensatz mehr existieren, welcher den Wert 13 hat.

    Das Ergebnis sollte also so aussehen:


    Vorname Nachname  Strasse           Hausnummer
    -------     --------       -------            ----------
    Hans      Muster         Testweg               1         
    Heinz     Klug             Ringweg              102       
    Hugo      Klemmerle   Hindenburgstrasse 98        


    Über eine Hilfe wie ich das realisieren kann würde ich mich wirklich sehr freuen.

    Vielen Dank schon mal vorab!!!



    • Bearbeitet jkpfz Mittwoch, 28. August 2019 07:45
    Mittwoch, 28. August 2019 07:39

Antworten

  • Nix einfacher als das ....  ;-)
    $QuellDaten = @'
    "Vorname";"Nachname";"Straße";"Hausnummer"
    "Hans";"Muster";"Testweg";1
    "Goerg";"Mueller";"Hauptstrasse";13
    "Ida";"Hansen";"Berliner Ring";13
    "Hugo";"Klemmerle";"Hindenburgstrasse";98
    "Heinz";"Klug";"Ringweg";102
    '@ | ConvertFrom-Csv -Delimiter ';'
    
    $QuellDaten | 
        Group-Object -Property Hausnummer | 
            Where-Object { $_.Count -lt 2 } | 
                Select-Object -ExpandProperty Group

    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    Mittwoch, 28. August 2019 09:53

Alle Antworten

  • Nix einfacher als das ....  ;-)
    $QuellDaten = @'
    "Vorname";"Nachname";"Straße";"Hausnummer"
    "Hans";"Muster";"Testweg";1
    "Goerg";"Mueller";"Hauptstrasse";13
    "Ida";"Hansen";"Berliner Ring";13
    "Hugo";"Klemmerle";"Hindenburgstrasse";98
    "Heinz";"Klug";"Ringweg";102
    '@ | ConvertFrom-Csv -Delimiter ';'
    
    $QuellDaten | 
        Group-Object -Property Hausnummer | 
            Where-Object { $_.Count -lt 2 } | 
                Select-Object -ExpandProperty Group

    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    Mittwoch, 28. August 2019 09:53
  • Noch was ...  wenn Du die gleiche Frage zur gleichen Zeit in mehreren Foren postest, lass die Leute doch bitte wissen, dass Du das getan hast. Dann müssen die Menschen, die Willens sind, Dir zu helfen, im Zweifel nicht doppelt oder umsonst arbeiten.

    Danke.


    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    Mittwoch, 28. August 2019 10:14
  • Vielen herzlichen Dank für die Antwort. Das hat funktioniert. Ich werde das nächste Mal drandenken!
    Mittwoch, 28. August 2019 10:54