MDEValidator
1.5.0
PowerShell module to validate Microsoft Defender for Endpoint (MDE) configurations and security settings.
Minimum PowerShell version
5.1
Installation Options
Owners
Copyright
(c) 2026 Nathan Hutchinson. All rights reserved.
Package Details
Author(s)
- Nathan Hutchinson
Tags
Security Defender MDE Endpoint Validation Windows
Functions
Test-MDEConfiguration Get-MDEValidationReport Get-MDEOperatingSystemInfo Get-MDESecuritySettingsManagementStatus Get-MDEOnboardingStatusString Get-MDEManagementType Get-MDEManagedDefenderProductType Get-MDEManagementTypeFallback Get-MDEPolicyRegistryPath Get-MDEPolicySettingConfig Test-MDEPolicyRegistryValue Test-MDEPolicyRegistryVerification Test-MDEServiceStatus Test-MDEPassiveMode Test-MDEAntiSpywareEnabled Test-MDEIoavProtectionEnabled Test-MDENISEnabled Test-MDESignatureAge Test-MDESignatureInfo Test-MDERealTimeProtection Test-MDECloudProtection Test-MDECloudBlockLevel Test-MDECloudExtendedTimeout Test-MDESampleSubmission Test-MDEBehaviorMonitoring Test-MDEOnboardingStatus Test-MDEDeviceTags Test-MDENetworkProtection Test-MDENetworkProtectionWindowsServer Test-MDEDatagramProcessingWindowsServer Test-MDEAutoExclusionsWindowsServer Test-MDEAttackSurfaceReduction Test-MDEThreatDefaultActions Test-MDETroubleshootingMode Test-MDETamperProtection Test-MDETamperProtectionForExclusions Test-MDEExclusionVisibilityLocalAdmins Test-MDEExclusionVisibilityLocalUsers Test-MDESmartScreen Test-MDESmartScreenPUA Test-MDESmartScreenPromptOverride Test-MDESmartScreenDownloadOverride Test-MDESmartScreenDomainExclusions Test-MDESmartScreenAppRepExclusions Test-MDEDisableCatchupQuickScan Test-MDERealTimeScanDirection Test-MDESignatureUpdateFallbackOrder Test-MDESignatureUpdateInterval Test-MDEDisableLocalAdminMerge Test-MDEFileHashComputation Test-MDEPUAProtection
PSEditions
Dependencies
This module has no dependencies.
Release Notes
v1.5.0 — Automation & Performance
New automation features:
- JSON output format: Get-MDEValidationReport -OutputFormat JSON (metadata/summary/results envelope)
- -AsExitCode switch returns the Fail count as an integer for scheduled tasks, Intune remediation, and CI
- -Category and -ExcludeTest filtering on Test-MDEConfiguration and Get-MDEValidationReport
- Write-Progress reporting during validation runs
Enriched results:
- Every result now carries Category, Expected and Actual properties
- HTML report sections and Expected column are driven directly by result objects
Performance & maintainability:
- Defender CIM snapshots queried once per run (30-40 round-trips reduced to 2)
- HTML report generation extracted into private helpers
- New CONTRIBUTING.md guide for adding validation checks
Previous release (v1.4.0):
- Redesigned HTML report: gradient header, summary cards, section-grouped tables, print CSS
Total: 446 Pester tests (0 failures), zero PSScriptAnalyzer violations
FileList
- MDEValidator.nuspec
- MDEValidator.psd1
- MDEValidator.psm1
- Private\ConvertTo-HtmlEncodedString.ps1
- Private\ConvertTo-MDEHtmlReport.ps1
- Private\Get-MDEDefenderLogoBase64.ps1
- Private\Test-IsElevated.ps1
- Private\Test-IsWindowsServer.ps1
- Private\Write-ValidationResult.ps1
- Public\Get-MDEManagedDefenderProductType.ps1
- Public\Get-MDEManagementType.ps1
- Public\Get-MDEManagementTypeFallback.ps1
- Public\Get-MDEOnboardingStatusString.ps1
- Public\Get-MDEOperatingSystemInfo.ps1
- Public\Get-MDEPolicyRegistryPath.ps1
- Public\Get-MDEPolicySettingConfig.ps1
- Public\Get-MDESecuritySettingsManagementStatus.ps1
- Public\Get-MDEValidationReport.ps1
- Public\Test-MDEAntiSpywareEnabled.ps1
- Public\Test-MDEAttackSurfaceReduction.ps1
- Public\Test-MDEAutoExclusionsWindowsServer.ps1
- Public\Test-MDEBehaviorMonitoring.ps1
- Public\Test-MDECloudBlockLevel.ps1
- Public\Test-MDECloudExtendedTimeout.ps1
- Public\Test-MDECloudProtection.ps1
- Public\Test-MDEConfiguration.ps1
- Public\Test-MDEDatagramProcessingWindowsServer.ps1
- Public\Test-MDEDeviceTags.ps1
- Public\Test-MDEDisableCatchupQuickScan.ps1
- Public\Test-MDEDisableLocalAdminMerge.ps1
- Public\Test-MDEExclusionVisibilityLocalAdmins.ps1
- Public\Test-MDEExclusionVisibilityLocalUsers.ps1
- Public\Test-MDEFileHashComputation.ps1
- Public\Test-MDEIoavProtectionEnabled.ps1
- Public\Test-MDENISEnabled.ps1
- Public\Test-MDENetworkProtection.ps1
- Public\Test-MDENetworkProtectionWindowsServer.ps1
- Public\Test-MDEOnboardingStatus.ps1
- Public\Test-MDEPUAProtection.ps1
- Public\Test-MDEPassiveMode.ps1
- Public\Test-MDEPolicyRegistryValue.ps1
- Public\Test-MDEPolicyRegistryVerification.ps1
- Public\Test-MDERealTimeProtection.ps1
- Public\Test-MDERealTimeScanDirection.ps1
- Public\Test-MDESampleSubmission.ps1
- Public\Test-MDEServiceStatus.ps1
- Public\Test-MDESignatureAge.ps1
- Public\Test-MDESignatureInfo.ps1
- Public\Test-MDESignatureUpdateFallbackOrder.ps1
- Public\Test-MDESignatureUpdateInterval.ps1
- Public\Test-MDESmartScreen.ps1
- Public\Test-MDESmartScreenAppRepExclusions.ps1
- Public\Test-MDESmartScreenDomainExclusions.ps1
- Public\Test-MDESmartScreenDownloadOverride.ps1
- Public\Test-MDESmartScreenPUA.ps1
- Public\Test-MDESmartScreenPromptOverride.ps1
- Public\Test-MDETamperProtection.ps1
- Public\Test-MDETamperProtectionForExclusions.ps1
- Public\Test-MDEThreatDefaultActions.ps1
- Public\Test-MDETroubleshootingMode.ps1