Exchange 2016: Virus scanner exclusions (script for Windows Defender)

Windows Defender is activated by default on Windows Server 2016. As Exchange Server requires some exclusions from the virus scanner, these must also be stored accordingly in Windows Defender. The same applies to virus scanners from other manufacturers.

The following information can be found on the Exchange Team Blog:

Windows Defender is on by default in Windows Server 2016. Attention to malware settings is particularly important with Exchange to avoid long processing times during installation and upgrade, as well as unexpected performance issues. The Exchange team recommends the Exchange installation and setup log folders be excluded from scanning in Windows Defender and other Anti-Virus software. Exchange noderunner processes should also be excluded from Windows Defender.

Source: Exchange Team Blog

The exclusions for Exchange 2016 are documented here in Technet:

However, the list is long, so Exchange MVP Paul Cunningham has published a script that clearly sorts the folders, processes and file types into 3 files. You can download the script here:

Generate Antivirus Exclusions for Exchange 2013 and 2016 Servers

Determine virus scanner exclusions via script

After Paul's script has been executed on the Exchange Server using the Exchange Management Shell, the 3 files can be found in the script folder:

image

The script itself only generates the message "Done" as output:

image

The 3 files now contain all exceptions for Exchange Server. Here are the file types as an example:

image

All exclusions (file types, paths and processes) must now be excluded in the virus scanner. How this works is different for each virus scanner. For Windows Defender it is simple:

Add exclusions to Windows Defender

As mentioned at the beginning, Windows Defender is enabled by default on Windows Server 2016. However, as Windows Defender can be configured using PowerShell, it is particularly quick to configure the exclusions. The following small script uses the 3 files from "Get-Exchange2016AVExclusions.ps1" and adds the exclusions:

[array]$ExcludeExtensions = (Import-Csv .\*extensions.txt -Header Extension).Extension
Set-MpPreference -ExclusionExtension $ExcludeExtensions
[array]$ExcludePaths = (Import-Csv .\*paths.txt -Header Paths).Paths
Set-MpPreference -ExclusionPath $ExcludePaths
[array]$ExcludeProcesses = (Import-Csv .\*procs.txt -Header Processes ).Processes
Set-MpPreference -ExclusionProcess $ExcludeProcesses
write-host "Exluded extensions: " -foregroundcolor green
Get-MpPreference | fl ExclusionExtension
write-host "Exluded pathes: " -foregroundcolor green
Get-MpPreference | fl ExclusionPath
write-host "Exluded processes: " -foregroundcolor green
Get-MpPreference | fl ExclusionProcess

The script can simply be saved as a .PS1 file in the same directory as "Get-Exchange2016AVExclusions.ps1" and then executed as administrator:

Windows Defender

Done. :-)

21 thoughts on “Exchange 2016: Virenscanner Ausschlüsse (Script für Windows Defender)”

  1. Frage zum Script auf einem Exchange 2019:

    Das Script lässt sich nicht ausführen. Auf einem 2016er hat es noch funktioniert aber jetzt moniert die Powershell eine fehlende digitale Signatur. Kann mir jemand weiterhelfen?

    Danke

    Reply
  2. Frage zu dem Script:

    wie kann ich die Einträge wieder rückgängig machen? Leider lassen sich die dadurch hinzugefügten Ausschlüsse nicht über die GUI manuell löschen. Ich kann zwar „Entfernen“ klicken, das bewirkt aber leider nichts.

    Ich habe hier eine O365 Hybrid-Bereitstellung mit einem EX2016 auf einem Server 2016, der Server macht also eigentlich nichts, ich wollten wegen der aktuell Hacks aber mal explizit mit dem Defender auch die Exchange Verzeichnisse scannen. (gepatcht habe ich natürlich trotzdem)

    Danke

    Reply
  3. Hallo Frank,

    auch ich möchte mich noch einmal an dieser Stelle für die vielen HowTos bedanken und Dich damit bestärken immer weiter zu machen :-)
    Aber ein Anliegen habe ich dennoch. Nach deinem HowTo Exchanger Server 2016 cu8 habe ich eine Exchange Server 2016 cu17-Struktur aufgebaut. Nach deinen Angaben hat alles funktioniert, jedoch bleibe ich bei den Ausnahmen für den Defender hängen.
    Das Script „Get-Exchange2016AVExclusions.ps1“ lässt sich zwar ausführen, es legt die Dateien an, jedoch sind die Dateien nach der Ausführung leer. Woran kann das liegen, habe ich noch etwas übersehen?

    MfG
    Andreas

    Reply
  4. Hallo!
    Mir ist aufgefallen, dass das Skript den Indexpfad nicht berücksichtigt.
    Es wird nur der Pfad zur EDB eingetragen, aber nicht der Indexordner im gleichen Pfad.
    Sollte man das im Skript evtl. noch nachbessern?

    Reply
  5. Danke für den Beitrag

    der Schalter -ConfigureWindowsDefender
    hat bei mir keine Pfade herausgenommen, Erweiterungen und Prozesse jedoch sauber übernommen
    Windows 2016 mit Exchange 2016 CU8

    Reply
  6. Hallo Frank

    Mittlerweile ist es mit dem Script von Paul direkt möglich, die Exclusions in den Windows Defender von Server 2016 einzutragen.
    Beim Generieren des Reprots einfach noch den Switch -ConfigureWindowsDefender anhängen, dann werden die Einträge aus den Files auch gleich in den Defender eingetragen.

    Gruss
    Doudi

    Reply
  7. Jo, geht wieder. War wohl tatsächlich nur ein temporäres Problem ;-).

    Danke.

    Gruß
    Christoph

    Reply
  8. Hallo Frank,

    der Link zum Skript von Paul Cunningham funktioniert nicht mehr. Ich habe auch im Web und auf den MS-Seiten gesucht, aber nicht gefunden. Hättest Du das als Datei zum Verschicken?

    Gruß
    Christoph

    Reply
  9. Hallo,

    gibt es zufällig auch so eine Möglichkeit für die System Center Endpoint Protection 2016?

    Gruß
    Benjamin

    Reply
  10. Hallo Frank,
    vielen Dank für das Skript oben, die Funktion ist so wie beschrieben.
    Ich denke allerdings, in Zeile 7 sollte .\*procs.txt (statt erneut .\*paths.txt) stehen.
    Hier konnte ich vor dem msxSetup Defender nicht über GUI deaktivieren, ich habe dafür in PS
    ‚Set-MpPreference DisableRealtimeMonitoring $true‘ benutzt.
    MfG, jel

    Reply
  11. Besteht die Möglichkeit diesen Vorgang irgendwie via GPO komplett zu automatisieren? Und müssen die Ausnahmen auch separat für den SCCM Endpoint Security-Client erfolgen oder bezieht dieser auch die Ausnahmeregeln von Windows Defender mit ein? (Die Lösungen verwenden meines Wissens nach ja eine ähnliche oder gar dieselbe Engine?)

    Reply
  12. … mh.

    wenn ich also nur hyper-v maschinen mit daten betreibe kann ich auf dem host den virenscanner komplett deaktivieren … oder wie seht ihr das?

    Reply

Leave a Comment