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
Gabriele Palumbo
Nasco a Bologna ma ho vissuto l’infanzia in Piemonte, l’adolescenza in Puglia e la maturità tra Umbria, Toscana, Puglia, Emilia-Romagna e Lombardia (e non è ancora finita). Ho avuto quindi modo di entrare in contatto con diversi ambienti e contesti sociali. Una formazione umanistica (Sociologia della devianza a Perugia e Relazioni Internazionali a Pisa), passione per la scrittura e decine di corsi sul mondo digital sono state ottime basi per entrare nel campo del marketing e della comunicazione. Nel 2015 pubblico il romanzo breve “Ci siamo solo persi di vista” e, a inizio 2019, pubblico la biografia della rock band “Ministri”, entrata in poche ore nei Top Sellers di Amazon. Un romanzo è in fase di scrittura. Terminati gli studi entro attivamente nel mondo della musica, organizzando svariati concerti e un festival, e della comunicazione digitale, gestendo la linea editoriale di blog e social e ricoprendo ruoli di copywriter e content editor. Nel 2017 entro nel collettivo Dischirotti. occupandomi dei contenuti web, mentre il 2018 mi vede prima nell’agenzia FLOOR concerti come booking agent per svariati artisti e poi in VOX concerti come direttore di produzione. Tornato a Bologna inizio a collaborare con l’etichetta discografica Manita Dischi come project manager e svolgo un tirocinio presso l’agenzia di marketing e comunicazione digitale Engine Lab, nel ruolo di content editor. Dal 2020 al 2023 ho collaborato, sia come editor che come contributor, con Fantastico.esclamativo, newsletter letteraria e rivista culturale creata da Alberto Guidetti de Lo Stato Sociale. Ogni due sabati invio “Capibara”, una newsletter che tratta di attualità e meme in un progetto che, occasionalmente, porto anche dal vivo sotto forma di Stand-Up. Attualmente ricopro il ruolo di Channel Marketing Manager in Achab, con particolare focus su contenuti editoriali, analytics, marketing automation e CMS.
Commenti (23)
Iscriviti
Notificami
guest
23 Commenti
Più vecchio
Più recente Più votato
Inline Feedbacks
Guarda tutti i commenti
Massimo Friargiu
Massimo Friargiu
11 anni fa

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

Claudio Panerai
Claudio Panerai
11 anni fa

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!

Samuel Vittoni
Samuel Vittoni
11 anni fa

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)

Claudio Panerai
Claudio Panerai
11 anni fa

Buongiorno Samuel,

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

Mark
Mark
11 anni fa

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

Claudio Panerai
Claudio Panerai
10 anni fa

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.

Massimo Giuliani
Massimo Giuliani
11 anni fa

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

Claudio Panerai
Claudio Panerai
11 anni fa

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

Gejser
Gejser
10 anni fa

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 🙂

Claudio Panerai
Claudio Panerai
10 anni fa

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.

Gejser
Gejser
10 anni fa

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 🙂

Claudio Panerai
Claudio Panerai
10 anni fa

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?

Gejser
Gejser
10 anni fa

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 🙂

Armando
Armando
9 anni fa

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
Armando
9 anni fa

non capisco continua a dirmi non ci sono istanze disponibili

Claudio Panerai
Claudio Panerai
9 anni fa

@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.

Armando
Armando
9 anni fa

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
Armando
9 anni fa

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

Claudio Panerai
Claudio Panerai
9 anni fa

Complimenti per il troubleshooting, almeno ha scoperto il problema.
Lungi dall’essere una soluzione, forse puo’ trovare qualche indizio interessante per cercare quello che le serve: http://blogs.msdn.com/b/dsadsi/archive/2009/09/18/accessing-a-64-bit-wmi-provider-from-a-32-bit-application-running-on-a-64-bit-client.aspx

Carlos Roncelli
Carlos Roncelli
5 anni fa

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

come faccio?
grazie

Claudio Panerai
Claudio Panerai
5 anni fa

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

Francesco Cocco
Francesco Cocco
2 anni fa

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

claudio
claudio
2 anni fa

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