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

Lo script cerca i seguenti software, sia come programmi classici (Win32) sia come app del Microsoft Store:

SoftwareTipoComponenti inclusi
Dell OptimizerWin32 e StoreDell Optimizer Service, Dell Optimizer Core, pacchetto DellInc.DellOptimizer
Dell SupportAssist per PCStorePacchetto DellInc.DellSupportAssistforPCs
Dell SupportAssist RemediationWin32
Dell SupportAssist OS Recovery Plugin for Dell UpdateWin32
Dell Display ManagerWin32Versioni 1.x e 2.x
Dell Display and Peripheral ManagerWin32
Dell Peripheral ManagerWin32Dell Peripheral Core
Dell PairWin32
Dell Digital DeliveryWin32Dell Digital Delivery Services
Dell Power Manager ServiceWin32
Dell Trusted DeviceWin32
Dell Partner PromoStorePacchetto 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:

Schema del funzionamento dello script: arresto dei servizi, ricerca dei programmi, ordinamento, disinstallazione silenziosa, verifica della rimozione con fallback msiexec, app dello Store, verifica finale e riepilogo
Figura 1 – Le fasi dello script e la verifica dopo ogni disinstallazione
  1. arresta i servizi e chiude i processi dei software Dell coinvolti, in tutte le sessioni utente;
  2. cerca i programmi installati nelle chiavi di disinstallazione del registro, sia a 64 sia a 32 bit;
  3. ordina le voci trovate: prima le applicazioni, poi i componenti Service, per ultimi i componenti Core da cui dipendono;
  4. disinstalla ogni programma con i parametri silenziosi del suo installer e un tempo massimo di esecuzione;
  5. 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;
  6. rimuove le app del Microsoft Store per tutti gli utenti e dall'immagine di Windows;
  7. 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.

InstallerCome viene riconosciutoParametri usati
MSImsiexec nella stringa di disinstallazione/x {GUID} /qn /norestart REBOOT=ReallySuppress
WiX BurnPercorso in Package Cache/uninstall /quiet /norestart
InstallShieldPercorso in InstallShield Installation Information-remove -runfromtemp -silent
Inno SetupFile unins000.exe/VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-
NSIS e altri EXETutti gli altri casi/S
App del Microsoft StorePacchetto AppX/MSIXRemove-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.

Scarica Remove-DellBloatware.zip

Dopo l'estrazione sblocca il file, che Windows segnala come scaricato da Internet:

PowerShell
Unblock-File C:\Script\DellDebloat\Remove-DellBloatware.ps1

Prova 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:

PowerShell
cd C:\Script\DellDebloat
powershell.exe -NoProfile -NonInteractive -ExecutionPolicy Bypass -File .\Remove-DellBloatware.ps1 -DryRun

Controlla 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
powershell.exe -NoProfile -NonInteractive -ExecutionPolicy Bypass -File .\Remove-DellBloatware.ps1

La 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

ParametroPredefinitoDescrizione
-DryRunDisattivoRileva e mostra cosa verrebbe rimosso, senza modificare nulla
-TimeoutMinutes15Tempo massimo concesso a ogni disinstallazione, da 1 a 120 minuti
-LogDirectoryC:\TempCartella in cui salvare il log e i log di msiexec
PowerShell
# 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:\Log

5. 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:

Windows CMD
psexec.exe -s powershell.exe -NoProfile -ExecutionPolicy Bypass -File C:\Script\DellDebloat\Remove-DellBloatware.ps1 -DryRun

RMM

  1. crea un nuovo script di tipo PowerShell e incolla il contenuto di Remove-DellBloatware.ps1;
  2. imposta l'esecuzione con l'account SYSTEM;
  3. imposta il timeout dello script ad almeno 30 minuti;
  4. usa il codice di uscita per l'esito: 0 riuscito, 3010 riavvio necessario, 1 errore.

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:

ImpostazioneValore
File di scriptRemove-DellBloatware.ps1
Esegui lo script con le credenziali dell'utente connessoNo
Imponi il controllo della firma dello scriptNo
Esegui lo script nell'host PowerShell a 64 bitSì

Assegna lo script a un gruppo di dispositivi. Il log resta in C:\Temp su ogni PC.

Group Policy

  1. copia lo script in una cartella condivisa leggibile dagli account computer, ad esempio \\dominio.local\NETLOGON\DellDebloat;
  2. in Gestione Criteri di gruppo modifica una GPO collegata all'unità organizzativa dei PC Dell;
  3. 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:

Windows CMD
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à:

Windows CMD
schtasks /Delete /TN "DellDebloat" /F

6. 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).

PercorsoContenuto
C:\Temp\DellDebloat__.logTutto 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):

Output
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: 3010

Codici di uscita

CodiceSignificatoCosa fare
0Tutto rimosso, oppure nessun software da rimuovereNulla
3010Rimozione completata, serve un riavvioRiavvia il PC e, se vuoi una conferma, rilancia lo script
1Almeno un componente non è stato rimossoControlla le righe ERROR nel log
PassaggioComando o strumentoSezione
Scaricare e sbloccare lo scriptUnblock-FileVai
Provare senza modificare nullaRemove-DellBloatware.ps1 -DryRunVai
Rimuovere i softwareRemove-DellBloatware.ps1Vai
Distribuire come SYSTEMRMM, Intune, GPO, attività pianificataVai
Controllare l'esitoLog in C:\Temp e codice di uscitaVai

Problemi frequenti

SituazioneCausa probabileCosa fare
L'esecuzione di script è disabilitata nel sistemaCriteri di esecuzione di PowerShellAvvia lo script con -ExecutionPolicy Bypass oppure sbloccalo con Unblock-File
Privilegi amministrativi/SYSTEM richiestiPowerShell non avviato come amministratoreRiapri PowerShell come amministratore o esegui lo script da RMM, Intune o GPO
Get-AppxPackage fallito: Accesso negatoEsecuzione senza privilegi elevatiEsegui come amministratore o come SYSTEM
Exit code 1618 nel logUn'altra installazione in corso, ad esempio Windows UpdateRilancia lo script più tardi
Exit code 1603 su un MSIErrore generico di Windows InstallerApri il log in C:\Temp\DellDebloat_MSI e cerca Return value 3
Timeout superatoIl disinstallatore non ha terminato nel tempo massimoRilancia con -TimeoutMinutes 30
Disinstallatore non trovato su discoFile del programma cancellati, voce orfana nel registroReinstalla la stessa versione dal sito Dell e rilancia lo script
Stato Riavvio richiesto, codice 3010La rimozione si completa al riavvioRiavvia e rilancia lo script per conferma
Un software Dell ricompare dopo qualche giornoReinstallato da Dell Update o Dell Command | UpdateControlla i componenti installati dagli strumenti di aggiornamento e pianifica lo script periodicamente

Allegati

Leave A Comment

Allegati