Använda PowerShell för att avinstallera program

Del av min Övervaka informationsrapportering (MIR) test (MIR är nu en del av Enhansoft -rapportering) innebar att distribuera flera uppdateringar till mina ConfigMgr labs klienter. Mitt labb är en blandning av både x86 och x64 operativsystem (OS). Efter att ha distribuerat alla dessa versioner av MIR var jag kvar och letade efter en lösning som skulle göra det möjligt för mig att snabbt städa upp klientinstallationerna. I slutändan ville jag bara att den slutliga versionen skulle installeras på varje klient. I det här blogginlägget kommer jag att visa min lösning för hur jag använde PowerShell för att avinstallera program.

Tyvärr fanns det inget sätt att veta vilka versioner av MIR som distribuerades till vilka testdatorer. Det fanns också möjlighet att flera testdatorer kunde ha mer än en version av MIR installerad. Jag behövde ett sätt att automatiskt avinstallera MIR utan att behöva avinstallera det manuellt på varje dator. Jag ville ha ett skript som skulle upptäcka alla versioner av MIR på en dator och avinstallera var och en, en i taget.

Du skulle tro att en enkel lösning redan fanns! Har någonsin distribuerat Adobe läsare? Då skulle du veta att det kan finnas flera olika versioner av Adobe läsare listad inom Lägg till/ta bort program (ARP) på en dator. Varför skulle det inte finnas ett enkelt sätt att ta bort de äldre versionerna?

Efter att ha sökt på nätet ett tag hittade jag många skript som skulle hjälpa mig att avinstallera bara ett program i taget. Det fanns till och med några skript där ute som skulle fråga Win32_Product och sedan avinstallera två eller flera program. Men om du någonsin har läst Greg Ramseys blogginlägg Win32_Product Is Evil då vet du att det här är en dålig idé. Du ska aldrig göra det här! Det är därför jag aldrig kunde använda Win32_Product i mitt skript på grund av problemen det skapar.

Till slut satte jag ihop ett manus som på en hög nivå:

  • Upptäcker om skriptet körs som x84, x64 eller WoW32 -läge.
  • Läser både x86 och x64 avinstallera registernycklar.
  • Letar upp alla versioner av en applikation.
  • Genom att bläddra igenom listan över ARP -poster samlas den in:
    o MSI -namn/GUID.
    o Avinstallera information om varje MSI.
  • Loggar varje steg till en loggfil.

Hur ser det sista manuset ut? Se skärmdumpen nedan. Du kan också ladda ner det från Enhansoft hemsida.

Använda PowerShell för att avinstallera Applications-Final Script

Hur kan du distribuera detta skript med ConfigMgr?

Börja först med att redigera manuset. Ersätt programmets namn med det du vill avinstallera. I nedladdningsversionen är den för närvarande inställd på: Övervaka*Information*Rapportera*

Kom ihåg att * är ett jokertecken som används vid sökning av ARP -poster.

För det andra, skapa ett paket och ett program för din kommandorad. Det ska se ut som följande:
powershell.exe -ExecutionPolicy bypass -fil MIR_Uninstallv9.ps1

För det tredje, distribuera paketet och programmet som med alla andra program.

Därefter ska jag visa dig vad jag gjorde på en av mina testdatorer. Du kan se på skärmdumpen nedan att jag hade flera kopior av MIR installerat.

Använda PowerShell för att avinstallera Applications-MIR-versioner

Jag konfigurerar mitt program för att tyst distribuera i bakgrunden. Inget att se ur slutanvändarens perspektiv! Jag kan dock verifiera att PowerShell manuset körs genom att titta på Aktivitetshanteraren. Du måste vara snabb om du också vill göra det här! Skriptet tar bara några sekunder till några minuter att köra beroende på antalet ARP som det måste ta bort.

Som en sida kan du också se att manuset har körts inom Execmgr.log på din testdator.

Använda PowerShell för att avinstallera Applications-MIR Uninstalled

Du kan se från skärmdumpen ovan att efter några minuter allt Övervaka informationsrapportering ARP -poster togs bort. Kom ihåg att i vissa fall kanske du vill att ditt skript också ska starta om datorerna, så om du vill göra detta lägger du till kommandot i ditt skript:
restart -computer -force

Jag hoppas att du tycker att detta blogginlägg är användbart. Om du har några frågor om hur jag använde PowerShell för att avinstallera program är du välkommen att kontakta mig @GarthMJ.

Se hur Right Click Tools förändrar hur system hanteras.

Öka produktiviteten direkt med vår begränsade, kostnadsfria Community Edition.

Kom igång med Right Click Tools idag:

Dela detta:

Support

  • Detta fält används för valideringsändamål och ska lämnas oförändrat.

Kontakt

  • Detta fält används för valideringsändamål och ska lämnas oförändrat.
sv_SESwedish