Gestire Microsoft Defender Antivirus con PowerShell: cmdlet pratici per sysadmin
#tech
spcnet.it/gestire-microsoft-de…
@informatica
Gestire Microsoft Defender Antivirus con PowerShell: cmdlet pratici per sysadmin
Microsoft Defender Antivirus è il componente di sicurezza integrato in Windows 10, Windows 11 e Windows Server 2016 e successivi. Spesso gestito tramite interfaccia grafica o Group Policy, offre però un set completo di cmdlet PowerShell che permettono una gestione programmatica potente, particolarmente utile in ambienti server headless, pipeline di automazione e script di provisioning.In questo articolo esploriamo i cmdlet principali, con esempi pratici di utilizzo per la gestione quotidiana da parte di amministratori di sistema.
Prerequisiti e Accesso
I cmdlet di Defender sono disponibili per impostazione predefinita su Windows 10/11 e Windows Server 2016+. Per usarli è necessario aprire PowerShell come amministratore.# Verifica che il modulo Defender sia disponibile Get-Module -ListAvailable -Name Defender # Per visualizzare la documentazione completa di qualsiasi cmdlet Get-Help <cmdlet> -Online
Nota importante: le modifiche apportate via PowerShell agiscono sulle impostazioni locali del dispositivo. Politiche distribuite tramite Microsoft Intune, Group Policy o Configuration Manager possono sovrascriverle. Pianificare di conseguenza nelle architetture gestite centralmente.Verificare lo Stato della Protezione
Il punto di partenza è sempre capire in che stato si trova il sistema.# Stato complessivo di Defender Antivirus Get-MpComputerStatus # Output selettivo: solo i campi più rilevanti Get-MpComputerStatus | Select-Object ` AntivirusEnabled, ` RealTimeProtectionEnabled, ` BehaviorMonitorEnabled, ` IoavProtectionEnabled, ` NISEnabled, ` QuickScanAge, ` FullScanAge, ` AntivirusSignatureLastUpdated, ` AntivirusSignatureVersionQuickScanAgeeFullScanAgeindicano da quanti giorni non viene eseguita una scansione rapida o completa. Un valore molto alto può indicare un problema di pianificazione.AntivirusSignatureLastUpdatedè critico: firme obsolete riducono drasticamente l’efficacia della protezione.Configurare le Preferenze con Set-MpPreference
Set-MpPreferenceè il cmdlet centrale per la configurazione. Permette di intervenire su centinaia di parametri.Protezione in Tempo Reale
# Abilitare la protezione in tempo reale (default: abilitata) Set-MpPreference -DisableRealtimeMonitoring $false # Abilitare il monitoraggio comportamentale Set-MpPreference -DisableBehaviorMonitoring $false # Abilitare la protezione cloud-delivered (MAPS) Set-MpPreference -MAPSReporting Advanced Set-MpPreference -SubmitSamplesConsent SendAllSamplesGestire le Esclusioni
Le esclusioni sono necessarie in ambienti dove certi processi o directory generano falsi positivi, ma vanno gestite con attenzione: sono uno dei vettori sfruttati dagli attaccanti (come visto nel caso TonRAT).# Aggiungere un percorso alle esclusioni Add-MpPreference -ExclusionPath "C:\AppData\MyApp\cache" # Aggiungere un processo alle esclusioni Add-MpPreference -ExclusionProcess "msbuild.exe" # Aggiungere un’estensione file alle esclusioni Add-MpPreference -ExclusionExtension ".log" # Verificare le esclusioni configurate Get-MpPreference | Select-Object ExclusionPath, ExclusionProcess, ExclusionExtension # Rimuovere una singola esclusione Remove-MpPreference -ExclusionPath "C:\AppData\MyApp\cache"
Best practice: documentare ogni esclusione con il motivo tecnico e revisionarle periodicamente. Un’esclusione dimenticata è una superficie di attacco aperta.Pianificazione delle Scansioni
# Impostare una scansione rapida giornaliera alle 03:00 Set-MpPreference -ScanScheduleDay Everyday Set-MpPreference -ScanScheduleTime 03:00:00 # Impostare una scansione completa settimanale alla domenica alle 02:00 Set-MpPreference -ScanParameters FullScan Set-MpPreference -ScanScheduleDay Sunday Set-MpPreference -ScanScheduleTime 02:00:00 # Abilitare la scansione dei file email e degli archivi compressi Set-MpPreference -DisableEmailScanning $false Set-MpPreference -DisableArchiveScanning $falseAggiornare le Definizioni Antivirus
# Aggiornare le signature immediatamente Update-MpSignature # Aggiornare da un percorso UNC condiviso (es. WSUS o share locale) Update-MpSignature -UpdateSource InternalDefinitionUpdateServer # Verificare la versione corrente delle signature (Get-MpComputerStatus).AntivirusSignatureVersion (Get-MpComputerStatus).AntivirusSignatureLastUpdated
In ambienti con dispositivi offline o in reti segmentate, la distribuzione delle signature tramite share UNC o WSUS è essenziale.Update-MpSignaturesupporta diversi source:MicrosoftUpdateServer,MMPC,InternalDefinitionUpdateServer,FileShares.Avviare Scansioni Manuali
# Scansione rapida Start-MpScan -ScanType QuickScan # Scansione completa Start-MpScan -ScanType FullScan # Scansione di un percorso specifico (custom scan) Start-MpScan -ScanType CustomScan -ScanPath "D:\Downloads" # Avviare in modo asincrono (non blocca la shell) Start-MpScan -ScanType QuickScan -AsJobRilevare e Gestire le Minacce
# Visualizzare le minacce rilevate attualmente attive Get-MpThreat # Visualizzare lo storico delle rilevazioni (incluse quelle già gestite) Get-MpThreatDetection # Output dettagliato di una singola minaccia per ID Get-MpThreat | Where-Object { $_.ThreatID -eq 12345 } | Format-List * # Rimuovere tutte le minacce attive in quarantena Remove-MpThreatPerformance Analyzer: Individuare i Colli di Bottiglia
Se Defender causa rallentamenti, il Performance Analyzer integrato aiuta a identificare quali file, processi o estensioni impattano maggiormente sui tempi di scansione:# Avviare la raccolta dati per 60 secondi New-MpPerformanceRecording -RecordTo "C:\Temp\DefenderPerf.etl" # Analizzare i risultati: top 10 file più lenti da scansionare Get-MpPerformanceReport -Path "C:\Temp\DefenderPerf.etl" ` -TopFiles 10 ` -TopScansPerFile 5 ` -TopProcessesPerFile 5Automazione: Script di Audit Difensivo
Uno script di audit rapido da eseguire periodicamente su ogni macchina o tramite PSRemoting su più host:function Get-DefenderAudit { $status = Get-MpComputerStatus $prefs = Get-MpPreference [PSCustomObject]@{ ComputerName = $env:COMPUTERNAME AVEnabled = $status.AntivirusEnabled RealTimeProtection = $status.RealTimeProtectionEnabled SignatureAge_Days = ((Get-Date) - $status.AntivirusSignatureLastUpdated).Days SignatureVersion = $status.AntivirusSignatureVersion LastQuickScan_Days = $status.QuickScanAge LastFullScan_Days = $status.FullScanAge ExclusionPathCount = @($prefs.ExclusionPath).Count ExclusionProcessCount = @($prefs.ExclusionProcess).Count CloudProtection = $prefs.MAPSReporting } } # Esecuzione locale Get-DefenderAudit | Format-List # Esecuzione remota su più host $servers = @("SRV01", "SRV02", "SRV03") Invoke-Command -ComputerName $servers -ScriptBlock ${Function:Get-DefenderAudit} | Sort-Object SignatureAge_Days -Descending | Format-Table -AutoSizeConclusione
I cmdlet PowerShell di Microsoft Defender Antivirus offrono un controllo granulare e scriptabile su ogni aspetto della protezione, rendendoli uno strumento fondamentale per i sysadmin che gestiscono flotte di macchine Windows. Integrarli in pipeline di provisioning, script di audit periodici e runbook di incident response è una pratica che migliora significativamente la postura di sicurezza senza dipendere da interfacce grafiche.Ricorda: le modifiche via PowerShell sono locali e possono essere sovrascritte da GPO o Intune. In ambienti gestiti centralmente, usa PowerShell per audit e diagnostica, e riserva la configurazione permanente agli strumenti di management centralizzato.
Fonte: 4sysops.com | Documentazione ufficiale: Microsoft Learn
Managing Microsoft Defender Antivirus through PowerShell cmdlets – 4sysops
Microsoft Defender Antivirus provides a robust set of PowerShell cmdlets for managing security features on Windows 10, Windows 11, and Windows Server 2016 or laIT News (4sysops)
Bianca Kastl
in reply to Bianca Kastl • • •reshared this
ʙwɑnɑ нoɴoʟʊʟʊ e Lord Caramac the Clueless, KSC reshared this.
Bianca Kastl
in reply to Bianca Kastl • • •reshared this
ʙwɑnɑ нoɴoʟʊʟʊ e Lord Caramac the Clueless, KSC reshared this.