none
Registrykeys auslesen & sortieren RRS feed

  • Frage

  • Hallo,

    zunächst einmal: Ich bin noch totaler Powershell Neuling & hab vorher noch nie damit gearbeitet.

    Ich will alle Keys auslesen, die in HKLM:\Software\Microsoft\Windows\CurrentVersion\uninstall liegen.

    Alle Objekte die leere Anzeigenamen oder Versionsnummern haben sollen nicht angezeigt werden.

    Und die Ausgabe soll alphabetisch nach dem Anzeigenamen sortiert werden.

    Ich habe nun folgendes Skript geschrieben:

    Get-ChildItem HKLM:\Software\Microsoft\Windows\CurrentVersion\uninstall | Where-Object {{Get-ItemProperty $_.pspath | select -property DisplayName} -ne $null } | Where-Object {{Get-ItemProperty $_.pspath | select -property DisplayName} -ne '' } | Where-Object {{Get-ItemProperty $_.pspath | select -property version} -ne $null } | Where-Object {{Get-ItemProperty $_.pspath | select -property version} -ne '' }  | Sort-Object -property DisplayName

    Es wird auch das ausgegeben was ich haben will, nur leider funktioniert die Sortierung nicht. Hab ich etwas falsch gemacht?

    Ich hoffe ihr könnt mir weiterhelfen.

    Vielen Dank & viele Grüße

    Flo


    Montag, 16. November 2015 11:03

Antworten

  • Hallo,

    meinst Du sowas.

    $RegPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
    Get-ItemProperty -Path "$RegPath\*" | Where-Object { $_.DisplayName -ne $Null -and $_.DisplayVersion -ne $Null } | Select-Object DisplayName, DisplayVersion | Sort-Object DisplayName

    Beste Gruesse
    brima

    Montag, 16. November 2015 12:35
  • Vier mal von den gleichen Keys die Properties zu laden (Get-Itemproperty) ist nicht nur überflüssig, sondern hat wahrscheinlich auch dazu geführt das du dich da irgendwo verheddert hast. Einmal am Anfang reicht auch völlig.

    Darüber hinaus kannst du das Prüfen auf $null und " "  mit einer Methode des String-Objekts vereinfachen:

    Get-ChildItem HKLM:\Software\Microsoft\Windows\CurrentVersion\uninstall  | Get-ItemProperty | 
    	where-object { (-not ([string]::IsNullOrWhiteSpace($_.DisplayName) )) -and (-not ([string]::IsNullOrWhiteSpace($_.Version) )) } |
    	  Sort-Object -Property DisplayName  
     


     Grüße, Denniver




    Blog: http://bytecookie.wordpress.com

    Kostenloser Powershell Snippet Manager v4: Link ! Neue Version !
    (Schneller, besser + komfortabler scripten.)

    Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
    Warum das Ganze? Hier gibts die Antwort.

    Montag, 16. November 2015 15:09
    Moderator

Alle Antworten

  • Hallo,

    meinst Du sowas.

    $RegPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
    Get-ItemProperty -Path "$RegPath\*" | Where-Object { $_.DisplayName -ne $Null -and $_.DisplayVersion -ne $Null } | Select-Object DisplayName, DisplayVersion | Sort-Object DisplayName

    Beste Gruesse
    brima

    Montag, 16. November 2015 12:35
  • Vier mal von den gleichen Keys die Properties zu laden (Get-Itemproperty) ist nicht nur überflüssig, sondern hat wahrscheinlich auch dazu geführt das du dich da irgendwo verheddert hast. Einmal am Anfang reicht auch völlig.

    Darüber hinaus kannst du das Prüfen auf $null und " "  mit einer Methode des String-Objekts vereinfachen:

    Get-ChildItem HKLM:\Software\Microsoft\Windows\CurrentVersion\uninstall  | Get-ItemProperty | 
    	where-object { (-not ([string]::IsNullOrWhiteSpace($_.DisplayName) )) -and (-not ([string]::IsNullOrWhiteSpace($_.Version) )) } |
    	  Sort-Object -Property DisplayName  
     


     Grüße, Denniver




    Blog: http://bytecookie.wordpress.com

    Kostenloser Powershell Snippet Manager v4: Link ! Neue Version !
    (Schneller, besser + komfortabler scripten.)

    Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
    Warum das Ganze? Hier gibts die Antwort.

    Montag, 16. November 2015 15:09
    Moderator