|
Liste aller Codebeispiele
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 Win32_Product | 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'
Verfügbarkeit der Klasse 'Microsoft.Win32'
Übersicht über den FCL-Namensraum 'Microsoft.Win32'
Portal dotnetframework.de
|
|