Public/Test-MDEAutoExclusionsWindowsServer.ps1
|
function Test-MDEAutoExclusionsWindowsServer { <# .SYNOPSIS Tests if Auto Exclusions for Servers is enabled. .DESCRIPTION Checks if the DisableAutoExclusions setting is enabled for Windows Server operating systems. Windows Server roles automatically add exclusions for their components (like SQL Server, Exchange, etc.). Disabling auto exclusions improves security by preventing these automatic exclusions and requiring explicit configuration. For non-Server operating systems (e.g., Windows 10/11 Professional, Enterprise), this check returns NotApplicable as auto exclusions are primarily a Server concern. .EXAMPLE Test-MDEAutoExclusionsWindowsServer Tests if Auto Exclusions is properly disabled for Windows Server. .OUTPUTS PSCustomObject with validation results. .NOTES DisableAutoExclusions values (via Get-MpPreference): $true = Auto exclusions are disabled (recommended for security) $false or not set = Auto exclusions are enabled (roles add their own exclusions) This setting can be configured via: - Group Policy: Computer Configuration > Administrative Templates > Windows Components > Microsoft Defender Antivirus > Exclusions > Turn off Auto Exclusions - Intune/MEM: Endpoint Security > Antivirus - PowerShell: Set-MpPreference -DisableAutoExclusions $true #> [CmdletBinding()] param() $testName = 'Auto Exclusions for Servers (DisableAutoExclusions)' # Check if running on Windows Server if (-not (Test-IsWindowsServer)) { Write-ValidationResult -TestName $testName -Status 'NotApplicable' ` -Message "This check only applies to Windows Server operating systems." return } try { $mpPreference = Get-MpPreference -ErrorAction Stop # DisableAutoExclusions: $true = Disabled (good for security), $false = Enabled (allows automatic exclusions) if ($mpPreference.DisableAutoExclusions -eq $true) { Write-ValidationResult -TestName $testName -Status 'Pass' ` -Message "Auto Exclusions for Servers is disabled. Server roles will not automatically add exclusions." } else { Write-ValidationResult -TestName $testName -Status 'Warning' ` -Message "Auto Exclusions for Servers is enabled. Server roles (SQL, Exchange, etc.) automatically add their own exclusions." ` -Recommendation "Consider disabling Auto Exclusions via Intune or Group Policy and explicitly configure required exclusions for better security control. Set DisableAutoExclusions to `$true." } } catch { Write-ValidationResult -TestName $testName -Status 'Fail' ` -Message "Unable to query Auto Exclusions setting: $_" ` -Recommendation "Ensure Windows Defender is properly installed and configured, and that you have appropriate permissions." } } |