Uno script PowerShell che individua e disinstalla senza alcuna interazione Dell Optimizer, SupportAssist, Display Manager e gli altri software Dell preinstallati, pensato per l'esecuzione come SYSTEM da RMM, Intune o GPO
Obiettivo: rimuovere dai PC Dell aziendali il software preinstallato non necessario (Dell Optimizer, SupportAssist, Display Manager, Digital Delivery e altri) in modo completamente silenzioso, senza finestre né richieste di conferma, con un unico script distribuibile su tutto il parco macchine.
Ogni prodotto Dell ha un proprio disinstallatore con parametri diversi: alcuni sono pacchetti MSI, altri eseguibili InstallShield, Inno Setup o NSIS, altri ancora app del Microsoft Store. Lo script Remove-DellBloatware.ps1 riconosce automaticamente il tipo di installer, usa i parametri silenziosi corretti, verifica che ogni rimozione sia andata a buon fine e salva un log dettagliato in C:\Temp.
ℹ️ Pensato per l'esecuzione come SYSTEM
Lo script non mostra finestre, avvisi o richieste interattive: può essere lanciato da un RMM, da Intune, da una GPO di avvio o da un'attività pianificata con l'account SYSTEM. Avanzamento ed errori vengono scritti in console, quindi compaiono nell'output dell'RMM, e nel file di log.
Indice
- 1. Software rimossi
- 2. Come funziona lo script
- 3. Prerequisiti
- 4. Eseguire lo script
- 5. Distribuire lo script come SYSTEM
- 6. Log e codici di uscita
- 7. Riepilogo e risoluzione dei problemi
1. Software rimossi
Lo script cerca i seguenti software, sia come programmi classici (Win32) sia come app del Microsoft Store:
| Software | Tipo | Componenti inclusi |
|---|---|---|
| Dell Optimizer | Win32 e Store | Dell Optimizer Service, Dell Optimizer Core, pacchetto DellInc.DellOptimizer |
| Dell SupportAssist per PC | Store | Pacchetto DellInc.DellSupportAssistforPCs |
| Dell SupportAssist Remediation | Win32 | |
| Dell SupportAssist OS Recovery Plugin for Dell Update | Win32 | |
| Dell Display Manager | Win32 | Versioni 1.x e 2.x |
| Dell Display and Peripheral Manager | Win32 | |
| Dell Peripheral Manager | Win32 | Dell Peripheral Core |
| Dell Pair | Win32 | |
| Dell Digital Delivery | Win32 | Dell Digital Delivery Services |
| Dell Power Manager Service | Win32 | |
| Dell Trusted Device | Win32 | |
| Dell Partner Promo | Store | Pacchetto DellInc.PartnerPromo |
Le app del Microsoft Store vengono rimosse per tutti gli utenti e anche dall'immagine di Windows (pacchetti provisioned), così non vengono reinstallate nei nuovi profili.
ℹ️ Cosa non viene rimosso
Lo script non tocca Dell Command | Update, Dell Command | Power Manager e Dell Update for Windows, che servono ad aggiornare driver e BIOS. Anche la versione classica (Win32) di Dell SupportAssist non è nell'elenco.
💡 Personalizzare l'elenco
I software da rimuovere sono definiti all'inizio dello script in due liste: $Win32Targets, con il nome visualizzato in Programmi e funzionalità espresso come espressione regolare, e $AppxTargets, con il nome del pacchetto AppX. Per aggiungere o escludere un prodotto basta modificare queste due liste.
2. Come funziona lo script
Lo script esegue sempre le stesse fasi, nello stesso ordine:

- arresta i servizi e chiude i processi dei software Dell coinvolti, in tutte le sessioni utente;
- cerca i programmi installati nelle chiavi di disinstallazione del registro, sia a 64 sia a 32 bit;
- ordina le voci trovate: prima le applicazioni, poi i componenti Service, per ultimi i componenti Core da cui dipendono;
- disinstalla ogni programma con i parametri silenziosi del suo installer e un tempo massimo di esecuzione;
- verifica che la voce sia davvero sparita da Programmi e funzionalità: se un disinstallatore EXE fallisce e il programma ha un codice prodotto MSI, riprova con
msiexec /x; - rimuove le app del Microsoft Store per tutti gli utenti e dall'immagine di Windows;
- esegue una verifica finale e scrive il riepilogo con il codice di uscita.
La ricerca dei programmi viene ripetuta fino a tre volte, per rimuovere anche i componenti che compaiono solo dopo la disinstallazione dell'applicazione principale.
Metodi di disinstallazione
Lo script ricava il tipo di installer dalla stringa di disinstallazione registrata in Windows. Se il produttore fornisce un comando di disinstallazione silenziosa (QuietUninstallString), usa quello.
| Installer | Come viene riconosciuto | Parametri usati |
|---|---|---|
| MSI | msiexec nella stringa di disinstallazione | /x {GUID} /qn /norestart REBOOT=ReallySuppress |
| WiX Burn | Percorso in Package Cache | /uninstall /quiet /norestart |
| InstallShield | Percorso in InstallShield Installation Information | -remove -runfromtemp -silent |
| Inno Setup | File unins000.exe | /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP- |
| NSIS e altri EXE | Tutti gli altri casi | /S |
| App del Microsoft Store | Pacchetto AppX/MSIX | Remove-AppxPackage -AllUsers e Remove-AppxProvisionedPackage |
Inoltre lo script:
- prima di ogni MSI attende che Windows Installer sia libero, per evitare l'errore 1618;
- assegna a ogni disinstallatore un timeout (15 minuti predefiniti): allo scadere il processo viene terminato e l'errore registrato nel log;
- attende fino alla fine i disinstallatori che si copiano nella cartella temporanea e terminano subito, come quelli NSIS, InstallShield e Inno Setup;
- se l'agent avvia PowerShell a 32 bit su Windows a 64 bit, si riavvia automaticamente nella versione a 64 bit per leggere le chiavi di registro corrette.
ℹ️ La verifica conta più del codice di uscita
Alcuni disinstallatori restituiscono 0 anche quando non hanno rimosso nulla. Per questo lo script considera un programma rimosso solo se la sua voce è sparita da Programmi e funzionalità. Se il disinstallatore segnala successo ma la voce è ancora presente, l'esito è Riavvio richiesto.
3. Prerequisiti
- Windows 10 o Windows 11;
- Windows PowerShell 5.1, già incluso in Windows (lo script funziona anche con PowerShell 7);
- esecuzione come amministratore oppure come SYSTEM: senza privilegi lo script si interrompe con un errore, tranne in modalità
-DryRun; - nessun modulo aggiuntivo e nessuna connessione a Internet.
4. Eseguire lo script
Download dello script
📦 Remove-DellBloatware.zip
L'archivio contiene lo script Remove-DellBloatware.ps1 e il file LEGGIMI.txt con il riepilogo di parametri e codici di uscita. Estrailo in una cartella del PC, ad esempio C:\Script\DellDebloat.
Dopo l'estrazione sblocca il file, che Windows segnala come scaricato da Internet:
Unblock-File C:\Script\DellDebloat\Remove-DellBloatware.ps1Prova con -DryRun
Prima di rimuovere qualsiasi cosa esegui una prova. Con il parametro -DryRun lo script rileva i software Dell installati e mostra il comando che userebbe per ciascuno, senza modificare nulla. Apri PowerShell come amministratore ed esegui:
cd C:\Script\DellDebloat
powershell.exe -NoProfile -NonInteractive -ExecutionPolicy Bypass -File .\Remove-DellBloatware.ps1 -DryRunControlla l'elenco nel riepilogo finale: ogni software trovato compare con lo stato DryRun e il metodo di disinstallazione previsto.
Rimozione
Se l'elenco è corretto, lancia la rimozione togliendo -DryRun:
powershell.exe -NoProfile -NonInteractive -ExecutionPolicy Bypass -File .\Remove-DellBloatware.ps1La durata dipende dai software presenti: Dell Optimizer da solo può richiedere diversi minuti. Al termine leggi il riepilogo e, se il codice di uscita è 3010, riavvia il PC.
⚠️ Prova su un PC di test
Esegui sempre la prima rimozione su un PC di test con lo stesso modello e la stessa immagine di quelli in produzione. Su alcuni modelli Dell Optimizer gestisce funzioni di alimentazione e audio: dopo la rimozione Windows torna alle impostazioni predefinite.
Parametri
| Parametro | Predefinito | Descrizione |
|---|---|---|
-DryRun | Disattivo | Rileva e mostra cosa verrebbe rimosso, senza modificare nulla |
-TimeoutMinutes | 15 | Tempo massimo concesso a ogni disinstallazione, da 1 a 120 minuti |
-LogDirectory | C:\Temp | Cartella in cui salvare il log e i log di msiexec |
# Timeout di 30 minuti per ogni disinstallazione e log in una cartella diversa
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\Remove-DellBloatware.ps1 -TimeoutMinutes 30 -LogDirectory D:\Log5. Distribuire lo script come SYSTEM
Su più PC lo script va eseguito con l'account SYSTEM, quello usato da RMM, Intune e GPO. In questo contesto non c'è un utente collegato alla console: per questo lo script non apre finestre e scrive tutto nel log.
Provarlo come SYSTEM con PsExec
Per simulare l'esecuzione come SYSTEM sul tuo PC usa PsExec di Sysinternals, da un prompt dei comandi aperto come amministratore:
psexec.exe -s powershell.exe -NoProfile -ExecutionPolicy Bypass -File C:\Script\DellDebloat\Remove-DellBloatware.ps1 -DryRunRMM
- crea un nuovo script di tipo PowerShell e incolla il contenuto di
Remove-DellBloatware.ps1; - imposta l'esecuzione con l'account SYSTEM;
- imposta il timeout dello script ad almeno 30 minuti;
- usa il codice di uscita per l'esito:
0riuscito,3010riavvio necessario,1errore.
La procedura è la stessa con NinjaOne, Datto RMM, N-able, ConnectWise e gli altri RMM che eseguono script PowerShell con l'account SYSTEM.
Microsoft Intune
In Dispositivi > Script e correzioni > Script della piattaforma aggiungi uno script per Windows 10 e versioni successive con queste impostazioni:
| Impostazione | Valore |
|---|---|
| File di script | Remove-DellBloatware.ps1 |
| Esegui lo script con le credenziali dell'utente connesso | No |
| Imponi il controllo della firma dello script | No |
| Esegui lo script nell'host PowerShell a 64 bit | Sì |
Assegna lo script a un gruppo di dispositivi. Il log resta in C:\Temp su ogni PC.
Group Policy
- copia lo script in una cartella condivisa leggibile dagli account computer, ad esempio
\\dominio.local\NETLOGON\DellDebloat; - in Gestione Criteri di gruppo modifica una GPO collegata all'unità organizzativa dei PC Dell;
- vai su Configurazione computer > Criteri > Impostazioni di Windows > Script (avvio/arresto), apri Avvio e aggiungi lo script nella scheda Script di PowerShell.
⚠️ Tempo massimo degli script di avvio
Per impostazione predefinita Windows interrompe gli script di Criteri di gruppo dopo 10 minuti. Se la rimozione richiede più tempo, aumenta il valore in Configurazione computer > Modelli amministrativi > Sistema > Criteri di gruppo > Tempo di attesa massimo per gli script di Criteri di gruppo.
Attività pianificata
Per un'esecuzione singola come SYSTEM, da un prompt dei comandi aperto come amministratore:
schtasks /Create /TN "DellDebloat" /SC ONCE /ST 00:00 /RU SYSTEM /RL HIGHEST /F /TR "powershell.exe -NoProfile -NonInteractive -ExecutionPolicy Bypass -File C:\Script\DellDebloat\Remove-DellBloatware.ps1"
schtasks /Run /TN "DellDebloat"A lavoro finito elimina l'attività:
schtasks /Delete /TN "DellDebloat" /F6. Log e codici di uscita
Ogni esecuzione crea un nuovo log con il nome del PC e la data. In console e nel log ogni riga riporta data, ora e livello: INFO, STEP (inizio di una fase), OK, WARN, ERROR e DEBUG (comando eseguito).
| Percorso | Contenuto |
|---|---|
C:\Temp\DellDebloat_ | Tutto ciò che compare in console: rilevamento, comandi eseguiti, esiti e riepilogo |
C:\Temp\DellDebloat_MSI\ | Log dettagliati di msiexec, uno per prodotto, utili quando una disinstallazione MSI fallisce |
Al termine lo script scrive un riepilogo con una riga per ogni componente trattato. Un esempio (versioni e nomi dei pacchetti variano da PC a PC):
2026-11-10 10:42:18 [STEP ] RIEPILOGO
2026-11-10 10:42:18 [OK ] Rimosso | Dell Optimizer 5.0.1100.0 | EXE-InstallShield, exit 0
2026-11-10 10:42:18 [OK ] Rimosso | Dell Optimizer Core 5.0.1100.0 | Rimosso da un componente correlato
2026-11-10 10:42:18 [OK ] Rimosso | DellInc.PartnerPromo_1.0.21.0_x64__htrsf667h5kn2 | AppX
2026-11-10 10:42:18 [WARN ] Riavvio richiesto | Dell Pair 1.3.0.0 | EXE-NSIS/Generic, exit 0, voce ancora presente
2026-11-10 10:42:18 [OK ] Completato. Errori: 0 | Exit code: 3010Codici di uscita
| Codice | Significato | Cosa fare |
|---|---|---|
0 | Tutto rimosso, oppure nessun software da rimuovere | Nulla |
3010 | Rimozione completata, serve un riavvio | Riavvia il PC e, se vuoi una conferma, rilancia lo script |
1 | Almeno un componente non è stato rimosso | Controlla le righe ERROR nel log |
7. Riepilogo e risoluzione dei problemi
| Passaggio | Comando o strumento | Sezione |
|---|---|---|
| Scaricare e sbloccare lo script | Unblock-File | Vai |
| Provare senza modificare nulla | Remove-DellBloatware.ps1 -DryRun | Vai |
| Rimuovere i software | Remove-DellBloatware.ps1 | Vai |
| Distribuire come SYSTEM | RMM, Intune, GPO, attività pianificata | Vai |
| Controllare l'esito | Log in C:\Temp e codice di uscita | Vai |
Problemi frequenti
| Situazione | Causa probabile | Cosa fare |
|---|---|---|
| L'esecuzione di script è disabilitata nel sistema | Criteri di esecuzione di PowerShell | Avvia lo script con -ExecutionPolicy Bypass oppure sbloccalo con Unblock-File |
| Privilegi amministrativi/SYSTEM richiesti | PowerShell non avviato come amministratore | Riapri PowerShell come amministratore o esegui lo script da RMM, Intune o GPO |
| Get-AppxPackage fallito: Accesso negato | Esecuzione senza privilegi elevati | Esegui come amministratore o come SYSTEM |
| Exit code 1618 nel log | Un'altra installazione in corso, ad esempio Windows Update | Rilancia lo script più tardi |
| Exit code 1603 su un MSI | Errore generico di Windows Installer | Apri il log in C:\Temp\DellDebloat_MSI e cerca Return value 3 |
| Timeout superato | Il disinstallatore non ha terminato nel tempo massimo | Rilancia con -TimeoutMinutes 30 |
| Disinstallatore non trovato su disco | File del programma cancellati, voce orfana nel registro | Reinstalla la stessa versione dal sito Dell e rilancia lo script |
| Stato Riavvio richiesto, codice 3010 | La rimozione si completa al riavvio | Riavvia e rilancia lo script per conferma |
| Un software Dell ricompare dopo qualche giorno | Reinstallato da Dell Update o Dell Command | Update | Controlla i componenti installati dagli strumenti di aggiornamento e pianifica lo script periodicamente |




