Arbeiten mit Softwareinstallationen
Anwendungen, die mit dem Windows Installer installiert werden, können über WMI-Abfragen gefunden werden, aber nicht alle Anwendungen verwenden den Windows Installer. Die spezifischen Techniken zum Suchen von Anwendungen, die mit anderen Tools installiert wurden, hängen von der Installationssoftware ab.
Beispielsweise können Anwendungen, die durch Kopieren der Dateien in einen Ordner auf den Computer installiert werden, in der Regel nicht mit den hier beschriebenen Verfahren verwaltet werden. Sie können diese Anwendungen als Dateien und Ordner mit den Verfahren verwalten, die unter Arbeiten mit Dateien und Ordnern erläutert werden.
Bei Software, die mit einem Installationspaket installiert wurde, kann der Windows Installer mithilfe der Win32Reg_AddRemovePrograms- oder der Win32_Product-Klassen gefunden werden. Beide sind jedoch nicht ganz einfach. Die Win32Reg_AddRemovePrograms-Klasse ist nur verfügbar, wenn Sie System Center Configuration Manager (SCCM) verwenden. Die Win32_Product-Klasse kann langsam sein und hat Nebenwirkungen.
Achtung
Die Win32_Product-Klasse ist nicht für Abfragen optimiert. Abfragen mit Platzhalterfiltern führen dazu, dass WMI alle installierten Produkte über den MSI-Anbieter auflistet und anschließend die vollständige Liste sequenziell analysiert, um den Filter zu verarbeiten. Außerdem wird eine Konsistenzprüfung der installierten Pakete gestartet, um die Installation zu überprüfen und zu reparieren. Die Validierung ist ein langwieriger Prozess und kann zu Fehlern in den Ereignisprotokollen führen. Weitere Informationen finden Sie im KB-Artikel 974524.
Dieser Artikel bietet eine alternative Methode zum Suchen nach installierter Software.
Abfragen des Registrierungsschlüssels für die Deinstallation zum Suchen nach installierter Software
Da die meisten Standardanwendungen ein Deinstallationsprogramm bei Windows registrieren, können Sie mit diesen lokal arbeiten, indem Sie sie in der Windows-Registrierung suchen. Es gibt keine garantierte Möglichkeit, jede Anwendung auf einem System zu finden. Allerdings ist es möglich, alle Programme mit Auflistungen in Software im folgenden Registrierungsschlüssel zu finden:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall
.
Wir können die Anzahl der installierten Anwendungen durch Zählen der Anzahl der Registrierungsschlüssel ermitteln:
$UninstallPath = 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall'
(Get-ChildItem -Path $UninstallPath).Count
459
Diese Liste mit Anwendungen kann nun mithilfe einer Vielzahl von Verfahren weiter durchsucht werden. Um die Werte der Registrierungswerte in den Registrierungsschlüsseln unter Uninstall
anzuzeigen, verwenden Sie die Methode GetValue()
der Registrierungsschlüssel. Der Wert der Methode ist der Name des Registrierungseintrags. Um die Anzeigenamen der Anwendungen beispielsweise im Uninstall
-Schlüssel zu suchen, verwenden Sie den folgenden Befehl:
Get-ChildItem -Path $UninstallPath |
ForEach-Object -Process { $_.GetValue('DisplayName') } |
Sort-Object
Hinweis
Es gibt keine Garantie dafür, dass die DisplayName-Werte eindeutig sind.
Im folgenden Beispiel wird eine Ausgabe ähnlich der Win32Reg_AddRemovePrograms-Klasse erzeugt:
Get-ChildItem $UninstallPath |
ForEach-Object {
$ProdID = ($_.Name -split '\\')[-1]
Get-ItemProperty -Path "$UninstallPath\$ProdID" -ea SilentlyContinue |
Select-Object -Property DisplayName, InstallDate, @{n='ProdID'; e={$ProdID}}, Publisher, DisplayVersion
} | Select-Object -First 3
Aus Platzgründen wird Select-Object
in diesem Beispiel verwendet, um die Anzahl der zurückgegebenen Elemente auf drei zu begrenzen.
DisplayName : 7-Zip 22.01 (x64)
InstallDate :
ProdID : 7-Zip
Publisher : Igor Pavlov
DisplayVersion : 22.01
DisplayName : AutoHotkey 1.1.33.10
InstallDate :
ProdID : AutoHotkey
Publisher : Lexikos
DisplayVersion : 1.1.33.10
DisplayName : Beyond Compare 4.4.6
InstallDate : 20230310
ProdID : BeyondCompare4_is1
Publisher : Scooter Software
DisplayVersion : 4.4.6.27483