- Betrifft: Windows Powershell
- System: Microsoft Windows XP oder Windows Server 2003 mit installiertem Powershell oder Windows Vista, Windows 7, Server 2008 x64, Windows Server 2008 R2 x64
- Problem: Wie erhalte ich eine komplette Liste aller Einträge aus “Software” bzw. “Programme und Funktionen”?
Hintergrund
Windows Powershell ist eine moderne Alternative für die Kommandozeile (“cmd”) und beinhaltet viele Vorteile. Erst hier kann man komplexe Skripte erstellen und objektorientiert verarbeiten lassen.
Durchführung
Variante 1: Ausgabe direkt in Powershell als Tabelle
Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\* | sort -Property DisplayName | Format-Table DisplayName, Publisher, DisplayVersion |
Variante 2: Ausgabe in eine Tabelle als CSV-Datei*
Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\* | sort -Property DisplayName | select-object DisplayName, Publisher, DisplayVersion | Export-Csv -path installierte_programme.csv -UseCulture |
Variante 3: Ausgabe als Liste in eine TXT-Datei*
Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\* | sort -Property DisplayName | format-list DisplayName, Publisher, DisplayVersion | out-File installierte_software.txt |
* = die jeweilige Datei wird in den aktuellen Pfad geschrieben. Also der zwischen “PS” und “>” angegeben wird.
es zeigt notepad nicht an
Das ist auch klar, da Notepad zu Windows gehört bzw. immer bei Windows installiert ist. Keines der vorinstallierten Programme wird hier aufscheinen. So fehlt auch Paint und einiges mehr.
Danke. Das war der erste funktionierende und einfache Ansatz den ich nach einer halben Stunde Recherche gefunden habe. Überall wird die wcim Abfrage gepriesen, obwohl Microsoft klar sagt, dass man damit nur installierte MSI Pakete ausgeben kann.
Ich muss mich gleich selbst korrigieren: der Ansatz erfasst nur einen Teil der Programme. Selbst wenn ich alle Microsoft Updates herausfiltere, enthält die Liste trotzdem nur ca. die Hälfte der installierten Programme. Spontan kann ich nicht sagen, welche fehlen.
Der Ansatz die Registry abzufragen ist aber auf jeden Fall richtig.
Naja soweit ich bisher verwendet habe hängt es scheinbar davon ab ob Powershell mit 32bit oder 64bit gestartet wurde.
Damit wären entweder nur alle 32bit oder eben 64bit Programme aufgelistet.