Soluzioni tecniche

Disinstallare il software in remoto

19 Giugno 2012

Il Windows Management Instrumentation Command-Line (WMIC) è un potente tool di Windows spesso sottovalutato o sottoutilizzato principalmente per la scarsa documentazione sul suo utilizzo.
Due risorse ufficiali rese disponibli direttamente da Microsoft si trovano a questi indirizzi: Microsoft TechNet e Windows XP Professional Product Documentation.
Un esempio di utilizzo efficiente di questo strumento è la possibilità di accedere al prompt dei comandi di un pc e da qui lanciare la rimozione di software presenti su altri pc.

Accedere al prompt dei comandi con opportune credenziali

Benché attraverso i comandi WMIC sia possibile far transitare password amministrative, diciamo che non è mai bello far transitare password sulla rete, per cui è più sicuro accedere al prompt del DOS con credenziali amministrative usando un comando come:

Runas /user:DomainAdminAccount@DOMAIN cmd

il che farà uscire la richiesta di password di amministratore di dominio.
Se la password è corretta, apparirà un prompt dei comandi con diritti di amministratore di dominio.

Entriamo in WMIC

Una delle cose belle del WMIC è che può essere eseguito su qualsiasi macchina.
Dal prompt dei comandi è sufficiente digitare WMIC e poi premere il tasto invio.

WMIC
 
Verifica del funzionamento

Per essere sicuri di poter rimuovere il software in remoto è opportuno fare qualche esperimento di verifica per accertarsi che tutto funzioni a dovere.
Proviamo allora a verificare l'elenco dei software installati su un determinato pc:
 

>/node:NOMECOMPUTER product get name,version,vendor

Questo commando chiede a WMI di presentare una lista di software che includa il Nome, la Versione e il Produttore (di software compatibili con WMIC).
Se si desidera filtrare in base a uno specifico produttore, per esempio Apple, ecco che il comando diventa:
 
>/node:NOMECOMPUTER product where vendor="Apple Inc." get name,vendor
 
 WMIC
 
Per i più smanettoni diciamo subito che si possono usare anche caratteri jolly per cui un commando del tipo:
 
>/node:NOMECOMPUTER product where “vendor like ‘Apple%’” get name, version

è ampiamente supportato.

Partiamo con la disinstallazione

Ora che abbiamo preso dimestichezza con lo strumento, si può passare a eseguire i comandi per la rimozione remota del software.
Se volessimo rimuovere il software "Bonjour", basterebbe digitare il comando:
 

>/node:EXAMPLE product where name="Bonjour" call uninstall

e il sistema proporrebbe una conferma (sempre a riga di comando) prima della rimozione:
 
Eseguire (\NBPANERAICROOTCIMV2:Win32_Product.IdentifyingNumber="{FF1C31AE-0CDC-40CE-AB85-406F8B70D643}",Name="Bonjour",Version="2.0.3.0")->Uninstall() (Y/N/?)?
 
 
WMIC
 
Naturalmente per procedere alla rimozione effettiva del software occorre confermare con "y".
Se il software che si sta rimuovendo è WMI compliant allora l’utente non vedrà nulla e non saranno necessarie altre conferme o altre operazioni.

Rimozione di massa

E se dobbiamo rimuovere un software da 10, 20 o addirittura 50 macchine?
Nulla di più semplice. Basta avere a disposizione un file di testo con i nomi delle macchine dalle quali occorre rimuovere il software.
Per comodità diciamo che i nomi delle macchine sono memorizzati nel file c:nomipc.txt.
Basterà accedere a un prompt dei comandi con opportuni diritti e digitare il commando:
 

>/failfast:on /node:@" c:nomipc.txt " product where name="Bonjour" call uninstall /nointeractive
 
O se non siete super certi del nome del software:
 
>/failfast:on /node:@" c:nomipc.txt " product where “name like ‘Bonjou’”" call uninstall /nointeractive
 
Buona disinstallazione!

E tu, come rimuovi il software senza fare un controllo remote invasive?

Autore
Claudio Panerai
Gli ultimi prodotti che vi ho portato, nel 2020: Vade Secure Il primo sistema antispam/antihishing/antimalware basato sull'intelligenza artificiale e appositamente progettato per Office 365. Naturalmente a misura di MSP. ID Agent Piaffaforma che consente agli MSP di monitorare le credenziali (proprie e dei clienti) che sono in vendita nel dark web.
Nato a Ivrea nel 1969, è sposato e padre di due figlie. Laureato in Scienze dell’Informazione nel 1993, ha dapprima svolto numerose consulenze e corsi di formazione per varie società per poi diventare responsabile IT per la filiale italiana del più grande editore mondiale di informatica, IDG Communications. Dal 2004 lavora in Achab dapprima come Responsabile del Supporto Tecnico per poi assumere dal 2008 la carica di Direttore Tecnico. Giornalista iscritto all’albo dei pubblicisti, dal 1992 pubblica regolarmente articoli su riviste di informatica e siti web di primo piano. E' stimato da colleghi e clienti per la schiettezza e onestà intellettuale. Passioni: viaggi, lettura, cinema, Formula 1, sviluppo personale, investimenti immobiliari, forex trading. Claudio è anche su LinkedIn e Facebook.
Commenti (23)

Volevo solo farti i complimenti, c’è sempre da imparare qualcosa in questo mondo di Microsoft e questa proprio mi era sconosciuta. Ciao e grazie

Massimo Friargiu,

Grazie Massimo,

i complimenti fanno sempre piacere, inutile negarLo.
Ma mi fa ancora più piacere che tu trovi utili i contenuti di questo blog. Infatti questo blog vuole portare valore ai lettori.
Non ci interessa fare il copia e incolla di qualche news trovata sui siti più gettonati.
Vogliamo portare a voi (e con voi) esperienze di informatica vissuta e "meditata".

Continua a seguirci!

Claudio Panerai,

Buongiorno,
Premetto che non ho a che fare con alcuna associazione, azienda o altro, sono solo un utente di internet affascinato dalla sua spiegazione.
Il mio nome è Samuel, ho un problema legato alla disinstallazione di un programma (iTunes) detto ciò mi chiedevo se potessi scomodare un professionista come lei per soccorrermi.
Ho cercato di disinstallarlo ma al punto finale, ma WMIC mi dice: nodo non valido (scartato)

Samuel Vittoni,

Buongiorno Samuel,

qual è il comando esatto che lei digita e qual è il risultato esatto che le viene fuori?

Claudio Panerai,

Innanzitutto complimenti per l’articolo! ho però una domanda: come inserisco i nomi delle macchine nel file di testo? mi spiego meglio, li devo separare con la "," con il ";" o semplicemente con uno spazio o un "a capo"?
Grazie mille in anticipo per la risposta.

Mark

Mark,

Ciao Mark,

se non ricordo male dovrebbero essere separati da una virgola, ma vai una verifica semplice prima di compilare un file di migliaia di macchine.
Non vorrei che da una versione all’altra dei sistemi operativi cambiasse la sintassi.
Sulla riga di comando se scrivi /NODE: pc1, pc2… ci va sicuramente la virgola.

Claudio Panerai,

Salve, complimenti per le ottime informazioni, volevo chiedere una delucidazione per quanto riguarda la disinstallazione massima. Inomi macchina presenti nel file txt devono essere separati da caratteri tipo virgole, punti o altro ??
Grazie
Massimo

Massimo Giuliani,

E’ un po’ che non uso quel comando, mi sembra che ci volesse la virgola.

Claudio Panerai,

Albanese Armando
Complimenti veri per la sua spiegazione molto valida ma sopratutto come dice lei piuttosto sconosciuta
ma adesso che lo letta ne ho già tratto vantaggio
ho solo qualche problemaq nell’eliminare un programma con questa stringa
/node:ITW1zx7y4j PRODUCT WHERE NAME="Winrar archivier" call uninstall

Armando,

non capisco continua a dirmi non ci sono istanze disponibili

Armando,

@Armando: difficile cosi’ su due piedi dire a cosa potrebbe essere legato.
Sto eseguendo il prompt del DOS come amministratore di rete?
Non ci sono firewall locali o antivirus che potenzialmente bloccano l’esecuzione dei comandi.

Claudio Panerai,

Salve Sig. Claudio
Ho controllato prima di lanciare il comando ed effettivamente non ci sono restrizioni di sorta
successivamente ho provato lo stesso comando sempre per disinstallare una applicazione ma stesso errore ora faro un pò di prove, Grazie comunque per la risposta

Armando,

Sig . Claudio
Scoperto l’arcano, utilizzando una sessione a x64 le applicazioni a 32bit non li considera proprio c’e qualche possibilità per farglieli vedere .. GRazie mille

Armando,

sono riuscito ad arrivare al product name vendor ma nella lista non mi trova teamviewer e nemmeno ultravnc che vorrei disinstallare

come faccio?
grazie

Carlos Roncelli,

Fare troubleshooting su uno script è quanto mai difficile, sopratutto non avendo accesso ai sistemi.
Il collega Furio (grande esperto di PowerShell) suggerisce di provare a usare il comando Get-WmiObject -Class Win32_Product

Claudio Panerai,

ciao, ho la necessità di rimuovere tutte le toolbar varie che installano gli utente ( nn li posso limitare ) è possibile farlo in un solo colpo " name like"*toolbar*"" o è meglio fare uno script x ognuna di esso? Inoltre è necessario l’elenco dei pc? se uso i caratteri jolly?? ciao e grazie 🙂

Gejser,

Ciao Gejser,
io consiglierei uno script per ogni applicativo da rimuovere.
L’elenco dei pc serve solo per dire su quali pc deve girare il tuo script di rimozione.

Fra l’altro se ti trovi spesso a dover fare questo tipo di operazioni io ti consiglio di dotarti di uno strumento di automatzione IT, come per esempio Kaseya (http://www.achab.it/kaseya) .
Potrebbe risparmiarti un po’ di ore di lavoro.

Claudio Panerai,

ucci ucci ucci sento odore di firewallucci… a cui non ho accesso in quanto gestito dalla ns casa madre… crucca… very thx 4 u help 🙂

Gejser,

A riecchime qui… sono di nuovo a stressare ma c’è qualcosa che mi sfugge… ho seguito le tue indicazioni ma continuo ad avere il msg "the RPC server is unavable", lancio la seguente stringa di comando (che non è altro che la tua con 2 modifiche ) —> /failfast:on /node:@"c:ElencoPc.txt" product where “name like ‘Bonjour’”" call uninstall /nointeractive, ora faccio il tutto dal mio server antivirus con su W2008 R2 e loggando con lo user ADMINISTRATOR… che cavolo sbaglio? cosa mi sta sfuggendo? ho seguito il tuo consiglio e ho creato n script a seconda di quanto devo togliere… poi altra cosa… questa cosa è schedulabile? magari in un file batch… grazie 1000 x il tuo supporto 🙂

Gejser,

Ciao,
se ottieni "the RPC server is unavaible" significa che "dall’altra parte non risponde nessuno".

Ti segnalo un link dove trovare puoi davvero tante informazioni sul troubleshooting per problemi legati a RPC:
http://social.technet.microsoft.com/wiki/contents/articles/4494.troubleshooting-the-rpc-server-is-unavailable.aspx

Diciamo che al volo mi vengono in mente queste cose da verificare:
1) il sistema remoto ha le porte aperte per RPC?
2) C’è un firewall in mezzo?
3) c’è un antivirus che potrebbe bloccare le richieste RPC?

Claudio Panerai,

ma se il programma da disinstallare richiede una password di disinstallazione? (solo password)…. posso aggiungere il parametro /password?

Francesco Cocco,

@Francesco: dipende dal tipo di software che stai rimuovendo, se l’uninstaller supporta o meno quel parametro.

claudio,

Lascia un commento

Il tuo indirizzo e-mail non verrà pubblicato, lo utilizzeremo solamente per inviarti la notifica della pubblicazione del tuo commento. Ti informiamo che tutti i commenti sono soggetti a moderazione da parte del nostro staff.