Sie sind hier: Startseite
 Liste aller Codebeispiele

Installierte Anwendungen auflisten

Autor: Dr. Holger Schwichtenberg 

Beschreibung

Für die Softwareverwaltung bietet die PowerShell keine eigenen Commandlets. Die WMI-Klasse Win32_Products mit Informationen über die installierten MSI-Pakete steht zur Verfügung, sofern der „WMI-Provider für Windows Installer“ installiert ist. Unter Windows Server 2003 ist dieser Provider eine Installationsoption von Windows und nicht mehr Standardinstallationsumfang.

Get-Wmiobject Win32_Product

Win32_Product listet aber nur Anwendungen auf, die mit Windows Installer installiert wurden. Alle Anwendungen, die man in der Systemsteuerung sieht, bekommt man nur über den Schlüssel
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall der Registrierungsdatenbank heraus.
Get-ChildItem HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

Vereinfachen kann man den Zugang dorthin, indem man ein neues PowerShell-Laufwerk definiert:

New-PSDrive -Name Software -PSProvider Registrierungsdatenbank -Root HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

Danach kann man einfach schreiben:

Get-ChildItem Software:

Beim Filtern muss man in jedem Fall beachten, dass die Eigenschaften (z.B. DisplayName, Comments und UninstallString) keine Attribute des Objekts vom Typ Microsoft.Win32.RegistryKey sind, sondern Unterelemente dieses Objekts. Daher muss GetValue() verwendet werden für den Zugriff auf die Daten.

Get-ChildItem Software: | Where-Object -FilterScript { $.GetValue("DisplayName") -like "a*"} | ForEach-Object -Process {$_.GetValue("DisplayName") , $_.GetValue("Comments"), $.GetValue("UninstallString") }

Programmcodebeispiele Windows PowerShell-Skript

Auflisten der installierten Anwendungen aus der Registry, deren Name mit a beginnt


Get-Wmiobject Win32Product | where-object { $.name -like "a*" }

Programmcodebeispiele Windows PowerShell-Skript

Auflisten der installierten Anwendungen aus der Registry, deren Name mit a beginnt


New-PSDrive -Name Software -PSProvider Registrierungsdatenbank -Root HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

Get-ChildItem Software: | Where-Object -FilterScript { $.GetValue("DisplayName") -like "a*"} | ForEach-Object -Process {$_.GetValue("DisplayName") , $_.GetValue("Comments"), $.GetValue("UninstallString") }

Hinweise

Ausgaben werden in den Beispielen durch Hilfsroutinen wie out() und PrintOut() erzeugt. Diese sind hier nicht angegeben, da deren Implementierung von der jeweiligen Umgebung abhängt. Für Konsolenanwendungen können hier z.B. Console.WriteLine() einsetzen.

Querverweise

 Definition '.NET Framework Class Library'  .NET & Visual Studio Community Portal