Created
September 2, 2021 22:54
-
-
Save marz-hunter/68ae78a9f7797fa33ae0f19264833b9d to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
############ | |
# You should be aware that this could make your system less secure. Use at your own risk. | |
# Note: This should be run from an administrative PowerShell prompt | |
############ | |
# Find registered WSL environments | |
$wslPaths = (Get-ChildItem HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss | ForEach-Object { Get-ItemProperty $_.PSPath}).BasePath | |
# Get the current Windows Defender exclusion paths | |
$currentExclusions = $(Get-MpPreference).ExclusionPath | |
if (!$currentExclusions) { | |
$currentExclusions = '' | |
} | |
# Find the WSL paths that are not excluded | |
$exclusionsToAdd = ((Compare-Object $wslPaths $currentExclusions) | Where-Object SideIndicator -eq "<=").InputObject | |
# List of paths inside the Linux distro to exclude (https://github.com/Microsoft/WSL/issues/1932#issuecomment-407855346) | |
$dirs = @("\bin", "\sbin", "\usr\bin", "\usr\sbin", "\usr\local\bin", "\usr\local\go\bin") | |
# Add the missing entries to Windows Defender | |
if ($exclusionsToAdd.Length -gt 0) { | |
$exclusionsToAdd | ForEach-Object { | |
# Exclude paths from the root of the WSL install | |
Add-MpPreference -ExclusionPath $_ | |
Write-Output "Added exclusion for $_" | |
# Exclude processes contained inside WSL | |
$rootfs = $_ + "\rootfs" | |
$dirs | ForEach-Object { | |
$exclusion = $rootfs + $_ + "\*" | |
Add-MpPreference -ExclusionProcess $exclusion | |
Write-Output "Added exclusion for $exclusion" | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment