Auch mit der PowerShell ist ein „Software Uninstall“ bzw. eine Deinstallation von Apps und Programmen möglich. Die PowerShell ist ein mächtiges Werkzeug für die Automatisierung von Aufgaben auf Windows-Computern. Eine der vielen Anwendungen ist auch die Deinstallation von Software. In dieser PowerShell Anleitung werden wir uns ansehen, wie man Software mit der PowerShell deinstalliert, welche technischen Hintergründe dabei eine Rolle spielen und welche Vor- und Nachteile diese Methode bietet.

Technischer Hintergrund

Die PowerShell ist eine von Microsoft entwickelte Aufgabenautomatisierungs- und Konfigurationsverwaltungssprache. Sie basiert auf der .NET-Plattform und ermöglicht es, verschiedene Systemfunktionen zu steuern und zu verwalten.

Beim Deinstallieren von Software oder Apps mittels PowerShell wird in der Regel auf die Windows Management Instrumentation (WMI) oder auf das Common Information Model (CIM) zurückgegriffen. Diese beiden Technologien bieten Methoden zur Interaktion mit installierten Anwendungen.

Deinstallation von Software mittels PowerShell

Hier sind einige grundlegende Beispiele, wie man Software mit PowerShell deinstallieren kann:

1. Software auflisten:

Bevor man Software deinstalliert, ist es oft hilfreich zu wissen, welche Software installiert ist. Dies kann man mit dem folgenden Befehl tun:

Get-WmiObject -Class Win32_Product

In einer Windows Terminal PowerShell Konsole, die mit Administrator Rechte gestartet wurde, sieht dann das Ergebnis wie folgt aus.

Get-WmiObject -Class Win32_Product

Die Auflistung der installierten Programme sieht recht unübersichtlich aus. Mit dem folgenden Befehl wird die Ausgabe als Tabelle formatiert und ist wesentlich übersichtlicher.

Get-WmiObject -Class Win32_Product | Format-Table Name, Version, Vendor

In der PowerShell Konsole sieht die Liste der installierten Programme wie folgt aus.

Get-WmiObject -Class Win32_Product Format-Table Name, Version, Vendor

2. Bestimmte Software deinstallieren:

Wenn Sie eine bestimmte Software deinstallieren möchten, können Sie dies tun, indem Sie nach dem Namen der Software filtern und dann die Uninstall-Methode aufrufen:

$software = Get-WmiObject -Class Win32_Product | Where-Object { $_.Name -like "SoftwareName" }
$software.Uninstall()

Ersetzen Sie „SoftwareName“ durch den Namen der zu deinstallierenden Software.

3. Alle Versionen einer Software deinstallieren:

Wenn Sie alle Versionen einer bestimmten Software deinstallieren möchten, können Sie dies mit einer „Foreach“-Schleife tun:

Get-WmiObject -Class Win32_Product | Where-Object { $_.Name -like "SoftwareName" } | ForEach-Object { $_.Uninstall() }

4. Alle Programme eines Herstellers deinstallieren

Um die Software des Herstellers tatsächlich zu deinstallieren:

Get-WmiObject -Class Win32_Product | Where-Object { $_.Vendor -like "HerstellerName" } | ForEach-Object { $_.Uninstall() }

Wichtig: Seien Sie sehr vorsichtig, wenn Sie Programme auf diese Weise deinstallieren, insbesondere ohne vorherige Überprüfung. Ein versehentliches Deinstallieren einer wichtigen Anwendung kann zu unerwünschten Ergebnissen führen.

Alle Software deinstallieren, die nach einem bestimmten Datum installiert wurden?

Software, die nach einem bestimmten Datum installiert wurde, kann über den Uninstall-Schlüssel in der Windows-Registry gefunden werden. Dort wird ein InstallDate-Eintrag für viele (aber nicht alle) Programme gespeichert.

Hier ist eine Vorgehensweise, wie Sie über PowerShell Software deinstallieren können, die nach einem bestimmten Datum installiert wurde:

Ersetzen Sie „YourDate“ durch das gewünschte Datum im Format „yyyyMMdd“ (z.B. 20220101 für den 1. Januar 2022).

Deinstallieren der Software, die nach einem bestimmten Datum installiert wurde:

$TargetDate = Get-Date "YourDate"

Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | 
Where-Object { $_.InstallDate } | 
Where-Object { [datetime]::ParseExact($_.InstallDate, 'yyyyMMdd', $null) -gt $TargetDate } | 
ForEach-Object { Start-Process $_.UninstallString -Wait }

Wichtige Punkte:

  • Die oben genannten Befehle berücksichtigen nur 64-Bit-Software. Für 32-Bit-Software auf einem 64-Bit-System sollten Sie auch „HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*“ überprüfen.
  • Die UninstallString-Eigenschaft kann unterschiedliche Deinstallationsbefehle enthalten. Manchmal handelt es sich um eine ausführbare Datei, manchmal um einen Befehl mit Parametern. Es ist wichtig zu überprüfen und zu testen, bevor Sie den Befehl auf einer Produktionsumgebung ausführen.
  • Nicht alle Programme haben ein InstallDate-Feld in der Registry. Daher kann dieser Ansatz einige Programme übersehen, die nach Ihrem Zieldatum installiert wurden.

Seien Sie vorsichtig bei der Anwendung solcher Befehle, insbesondere in Produktionsumgebungen. Es ist immer eine gute Idee, vor größeren Aktionen ein Backup zu machen.

Vor- und Nachteile der Software Deinstallation per PowerShell

Vorteile:

  1. Automatisierung: Mit PowerShell können Sie Deinstallationsprozesse automatisieren und auf mehreren Computern gleichzeitig ausführen.
  2. Präzision: Mit den richtigen Befehlen können Sie gezielt bestimmte Softwareversionen oder Anwendungen rückstandlos deinstallieren.
  3. Integration: PowerShell kann mit anderen Technologien und Skriptsprachen integriert werden, was zu einem robusten und anpassbaren System führt.

Nachteile:

  1. Komplexität: Für Anfänger kann die Syntax der PowerShell etwas überwältigend sein.
  2. Gefahr: Ein falscher Befehl kann dazu führen, dass nicht nur die gewünschte Software, sondern auch systemkritische Programme deinstalliert werden.
  3. Performance: Die Abfrage von „Win32_Product“ kann langsam sein und den Rechner belasten.

Fazit

Die PowerShell bietet eine leistungsstarke Möglichkeit, Software auf Windows-Computern zu deinstallieren. Mit der richtigen Vorsicht und Kenntnis der Befehle können Administratoren und erfahrene Nutzer diese Funktion nutzen, um ihre Systeme sauber und effizient zu halten. Es ist jedoch wichtig, sich stets über die Auswirkungen jedes Befehls im Klaren zu sein und bei Unsicherheiten nachzuforschen oder Experten zu konsultieren.

– Per PowerShell New-PSDrive Netzwerklaufwerke verbinden
– PowerShell Get-Process
– PowerShell New-Item
– PowerShell Get-Content
– PowerShell Set-ExecutionPolicy
– PowerShell Befehl Get-ChildItem
– PowerShell Remove-Item
– PowerShell Vergleichsoperatoren
– PowerShell IF – ELSE – Anleitung
– Test-Connection – Ping in der PowerShell
– Welche PowerShell Version ist installiert?
– PowerShell Parameter: Ein umfassender Leitfaden