2017-01-02 3 views
1

Ich verwende PowerShell-Skript, um Software zu deinstallieren, Dienste zu entfernen und Installationsordner zu löschen. Voll aufräumen. Diese Software hat Core App und 11 Addins. So verwende ich diesen Code für Add-In:Schnellere Deinstallation mit PowerShell

$appAddIns = @(Get-WmiObject -Class Win32_Product | Where-Object { $_.Name -match "SE0008*" }) 
foreach ($appAddIn in $appAddIns) 
    { 
    Write-Host "Uninstalling: " $appAddIn.Name 
    $appAddIn.Uninstall() | out-null 
    } 

Aber es ist schrecklich langsam auch das Skript zu starten. Ich renne es und es ist nur leer. Mein Kollege bei der Arbeit hat mein Skript nicht benutzt, weil er nach 10 Sekunden angenommen hat, dass es nicht funktioniert und beendete es.

Gibt es eine Möglichkeit, es besser zu schreiben, oder einfach nur hinzufügen:

Write-Host "Sit and wait you impatient bastard" 

am Anfang?

+2

Verwenden Sie 'Win32_Product' nicht dafür. https://gregramsey.net/2012/02/20/win32_product-is-evil/. Siehe http://stackoverflow.com/questions/25268491/alternative-to-win32-product – restless1987

Antwort

3

Win32_Product langsam ist, können Sie diesen Registrierungspfad nutzen (HKLM \ Software \ Microsoft \ Windows \ Currentversion \ Uninstall), um die Deinstallation Befehl zu erhalten und führen Sie es

+0

Das funktioniert gut :) –

2

Sie könnten Write-Progress verwenden und es dann mit dem Namen des Programms, das Sie deinstallieren, und einem berechneten Prozentsatz basierend auf der Anzahl der zu deinstallierenden Programme aktualisieren. Hier

ein Beispiel:

Write-Progress -Activity "Uninstalling programs..." 

for ($i = 1; $i -le 5; $i++) { 
    Write-Progress -Activity "Uninstalling programs..." -Status "Program $i" -PercentComplete ($i/5 * 100) 
    Start-Sleep -Seconds 1 
} 
1

Win32_product ist defekt und sollte nicht verwendet werden (selbst Microsoft schrieb einige Artikel über diese kaputte WMI-Klasse). Abgesehen davon, dass es sehr langsam ist, verursacht es auch Probleme mit den aktuell installierten MSI-Paketen, da es eine erneute Registrierung für alle registrierten MSI-Pakete erzwingt. Der einfachste Weg, Software zu deinstallieren, ist heutzutage Powershell Desired State Configuration (beachten Sie, dass Sie hierfür mindestens Windows 8.1 benötigen). Mit DSC können Sie auch das Dienstverhalten ändern, Dateien entfernen, MSI-Pakete installieren/deinstallieren, Powershell-Skripte usw. ausführen.

+0

Vielen Dank für diese Information! Wir verwenden Win 7, daher wird Powershell Desired State Configuration hier nicht helfen. Wir verwenden viele MSI-Pakete, daher ziehe ich dieses Skript jetzt zurück. – Diodak