Utilizzo di PowerShell per disinstallare le applicazioni

L'anno scorso ti ho parlato di come avevo bisogno di uno script che rilevasse tutte le versioni di un'applicazione su un computer e disinstallasse ciascuna versione una alla volta. Per farla breve, non sono riuscito a trovarne uno, quindi ho finito per metterne uno insieme! Da quando è stato pubblicato il post originale, ho ricevuto una serie di domande su come forzare un delta o un inventario hardware SCCM completo dopo la disinstallazione delle applicazioni. Alla fine ho deciso di aggiornare il mio script originale e il post sull'utilizzo PowerShell per disinstallare le applicazioni.

Il nuovo script include un inventario delta e ora c'è un'opzione per forzare un inventario hardware SCCM completo. In precedenza, se l'applicazione disinstallata era un file EXE (e non un file MSI) il PowerShell lo script fallirebbe perché l'hard code consentirebbe solo la disinstallazione dei file MSI. Ho corretto questo problema, quindi ora vengono disinstallati sia i file EXE che MSI.

Disinstalla applicazioni - Festeggia

Prima di arrivare a questo, però, dovrei dirti che il mio amico Jason Sandys già avuto un VBScript per fare esattamente quello che stavo cercando l'anno scorso. C'è una lunga battuta interna tra di noi su VBScript vs PowerShell, ma non ti annoierò qui. Quando stavo inizialmente cercando degli script, doveva essere PowerShell o niente. All'epoca il motivo era semplice. Avevo bisogno di saperne di più su PowerShell, quindi non ho mai cercato un VBScript e non ho mai visto il post di Jason. La parte divertente è che Jason alla fine mi ha parlato della sua sceneggiatura e mi ha mostrato una caratteristica molto interessante. È possibile forzare l'esecuzione di un ciclo di inventario hardware in seguito! Devi dare un'occhiata alla sceneggiatura di Jason sul suo sito blog.

Posso sentire alcuni di voi dire: "Quale sceneggiatura è migliore?" La risposta dipende, secondo me, dalla tua comprensione di VBScript e PowerShell. Al di fuori di questo, scegli quello che ti piace di più e usalo!

Sfondo

stavo testando il prodotto Monitorare la segnalazione delle informazioni (MIR) che ora fa parte di Rapporti Enhansoft. Questo test ha comportato la distribuzione di diversi aggiornamenti ai client del mio laboratorio. Il mio laboratorio è un mix di entrambi i sistemi operativi x86 e x64 (OS). Dopo aver distribuito tutte queste versioni di MIR, sono rimasto alla ricerca di una soluzione che mi consentisse di ripulire rapidamente le installazioni del client. Alla fine volevo solo la versione finale di MIR installata su ogni client.

Disinstalla applicazioni - Prova

Sfortunatamente non c'era modo di sapere quali versioni di MIR sono state distribuite su quali computer di prova. C'era anche la possibilità che diversi computer di prova potessero avere più di una versione di MIR installata. Avevo bisogno di un modo semplice per rilevare automaticamente tutte le versioni di MIR su un computer e disinstallarle una alla volta, senza doverlo disinstallare manualmente su ciascun computer. Da questa volta, sono felice di dire, la configurazione per MIR è stata aggiornata, quindi solo una versione alla volta può essere installata su un computer.

Torniamo al problema dell'anno scorso. Penseresti che potrei trovare un PowerShell soluzione. Hai mai distribuito? Adobe Reader? Allora sapresti che ci possono essere diverse versioni di Adobe Reader elencato all'interno Aggiungi/Rimuovi programma (ARP) su un computer. Perché non dovrebbe esserci un modo semplice per eliminare le versioni precedenti?

ne ho trovati tanti PowerShell script che mi aiutassero a disinstallare solo un'applicazione alla volta. Ce n'erano anche alcuni PowerShell script là fuori che potrebbero interrogare Win32_Prodotto e quindi disinstallare due o più applicazioni. Se invece leggi il post sul blog di Greg Ramsey Win32_Il prodotto è malvagio sapresti che questa è una cattiva idea. Non dovresti mai farlo! Ecco perché non potrei mai usare Win32_Product all'interno del mio script a causa dei problemi che crea.

Utilizzo di PowerShell per disinstallare le applicazioni

Ad alto livello, questo è ciò che ho aggiornato PowerShell lo script fa:
-Rileva se lo script è in esecuzione in modalità x84, x64 o WoW32.
-Legge le chiavi di registro di disinstallazione sia x86 che x64.
-Individua tutte le versioni di un'applicazione.
-Esplora l'elenco delle voci ARP e raccoglie:
-Nome MSI/GUID/Stringa di disinstallazione.
-Rileva se l'applicazione è un EXE o MSI e disinstalla l'applicazione di conseguenza.
-Registra ogni passaggio in un file di registro.
-Esegue un inventario hardware delta o, se il flag è impostato, un inventario hardware SCCM completo.

Di seguito è riportato come appare lo script finale, ma puoi anche Scarica esso dal Enhansoft sito web.

Disinstalla applicazioni - Script

Forza un inventario hardware completo SCCM

Per impostazione predefinita, un ciclo di inventario hardware delta inizierà come uno degli ultimi passaggi all'interno dello script. Non c'è altro che devi fare. Mi piace forzare, tuttavia, un inventario completo quando disinstallo le applicazioni. Se sei come me, tutto ciò che devi fare è cambiare il valore $fullinventory = $false in $true. Ciò forzerà la creazione di un inventario hardware completo SCCM.

Come distribuire lo script dell'applicazione di disinstallazione con SCCM

Innanzitutto, inizia modificando lo script. Sostituisci il nome dell'applicazione con quello che desideri disinstallare. Nella versione download è attualmente impostato su: Monitor*Informazioni*Reporting* Tieni presente che * è un carattere jolly utilizzato per cercare le voci ARP.

In secondo luogo, decidere se si desidera forzare un inventario hardware SCCM completo, quindi impostare il flag di conseguenza.

Terzo, crea un pacchetto e un programma per la tua riga di comando. Dovrebbe essere simile al seguente:
powershell.exe -ExecutionPolicy bypass -file Uninstallv10.ps1

Quarto, e infine, distribuire il pacchetto e il programma come faresti con qualsiasi altro programma.

Utilizzo dello script di disinstallazione dell'applicazione

Puoi vedere nello screenshot qui sotto che ho avuto diverse copie di MIR installate su questo computer di prova l'anno scorso.

Disinstalla applicazioni - Applicazioni MIR

Ho configurato il mio programma per la distribuzione silenziosa in background. Niente da vedere dal punto di vista dell'utente finale!

Se desideri verificare che il PowerShell lo script è in esecuzione, guarda il Task Manager. Dovrai essere veloce! Lo script richiede solo da pochi secondi a pochi minuti per essere eseguito a seconda del numero di ARP che deve rimuovere. Per inciso, puoi anche vedere che lo script è stato eseguito all'interno del Execmgr.log sul tuo computer di prova.

Disinstalla applicazioni - Applicazioni MIR rimosse

Puoi vedere dallo screenshot qui sopra che dopo pochi minuti tutti i Monitorare la segnalazione delle informazioni Le voci ARP sono state rimosse.

Tieni presente che il ciclo di inventario hardware (delta o completo) inizierà subito dopo la disinstallazione di tutte le applicazioni. L'esecuzione richiede solo pochi secondi (~60 secondi).

Riavvia i computer

In alcuni casi, potresti voler riavviare i computer dopo che l'inventario hardware è stato inviato a SCCM. Nel mio caso, ho aggiunto a Dormire comando al PowerShell script per 75 secondi prima del riavvio. Se il tuo inventario hardware richiede più tempo, regola semplicemente il tempo di conseguenza.

Ecco i comandi che ho usato:
Inizio-sonno – secondi 75
riavvia-computer -force

In caso di domande sull'utilizzo PowerShell per disinstallare le applicazioni, contattami @GarthMJ.

Scopri come Right Click Tools sta cambiando il modo in cui vengono gestiti i sistemi.

Aumenta immediatamente la produttività con la nostra Community Edition limitata e gratuita.

Inizia oggi con Right Click Tools:

Condividi questo:

Supporto

  • Questo campo serve per la convalida e dovrebbe essere lasciato inalterato.

Contatti

  • Questo campo serve per la convalida e dovrebbe essere lasciato inalterato.
it_ITItalian