-
-
Save Braytiner/be2497d1a06f5a9d943dc7760693d460 to your computer and use it in GitHub Desktop.
$userPath = $env:USERPROFILE | |
$pathExclusions = New-Object System.Collections.ArrayList | |
$processExclusions = New-Object System.Collections.ArrayList | |
$pathExclusions.Add('C:\Windows\Microsoft.NET') > $null | |
$pathExclusions.Add('C:\Windows\assembly') > $null | |
$pathExclusions.Add($userPath + '\Downloads\HeidiSQL_11.3_64_Portable') > $null | |
$pathExclusions.Add($userPath + '\.dotnet') > $null | |
$pathExclusions.Add($userPath + '\.librarymanager') > $null | |
$pathExclusions.Add($userPath + '\AppData\Local\Microsoft\VisualStudio') > $null | |
$pathExclusions.Add($userPath + '\AppData\Local\Microsoft\VisualStudio Services') > $null | |
$pathExclusions.Add($userPath + '\AppData\Local\GitCredentialManager') > $null | |
$pathExclusions.Add($userPath + '\AppData\Local\GitHubVisualStudio') > $null | |
$pathExclusions.Add($userPath + '\AppData\Local\Microsoft\dotnet') > $null | |
$pathExclusions.Add($userPath + '\AppData\Local\Microsoft\VSApplicationInsights') > $null | |
$pathExclusions.Add($userPath + '\AppData\Local\Microsoft\VSCommon') > $null | |
$pathExclusions.Add($userPath + '\AppData\Local\Temp\VSFeedbackIntelliCodeLogs') > $null | |
$pathExclusions.Add($userPath + '\AppData\Roaming\Microsoft\VisualStudio') > $null | |
$pathExclusions.Add($userPath + '\AppData\Roaming\NuGet') > $null | |
$pathExclusions.Add($userPath + '\AppData\Roaming\Visual Studio Setup') > $null | |
$pathExclusions.Add($userPath + '\AppData\Roaming\vstelemetry') > $null | |
$pathExclusions.Add($userPath + '\AppData\Roaming\HeidiSQL') > $null | |
$pathExclusions.Add('C:\ProgramData\Microsoft\VisualStudio') > $null | |
$pathExclusions.Add('C:\ProgramData\Microsoft\NetFramework') > $null | |
$pathExclusions.Add('C:\ProgramData\Microsoft Visual Studio') > $null | |
$pathExclusions.Add('C:\ProgramData\MySQL') > $null | |
$pathExclusions.Add('C:\Program Files\Microsoft Visual Studio') > $null | |
$pathExclusions.Add('C:\Program Files\dotnet') > $null | |
$pathExclusions.Add('C:\Program Files\Microsoft SDKs') > $null | |
$pathExclusions.Add('C:\Program Files\Microsoft SQL Server') > $null | |
$pathExclusions.Add('C:\Program Files\MySQL') > $null | |
$pathExclusions.Add('C:\Program Files\IIS') > $null | |
$pathExclusions.Add('C:\Program Files\IIS Express') > $null | |
$pathExclusions.Add('C:\Program Files (x86)\Microsoft Visual Studio') > $null | |
$pathExclusions.Add('C:\Program Files (x86)\dotnet') > $null | |
$pathExclusions.Add('C:\Program Files (x86)\Microsoft SDKs') > $null | |
$pathExclusions.Add('C:\Program Files (x86)\Microsoft SQL Server') > $null | |
$pathExclusions.Add('C:\Program Files (x86)\IIS') > $null | |
$pathExclusions.Add('C:\Program Files (x86)\IIS Express') > $null | |
$processExclusions.Add('ServiceHub.SettingsHost.exe') > $null | |
$processExclusions.Add('ServiceHub.IdentityHost.exe') > $null | |
$processExclusions.Add('ServiceHub.VSDetouredHost.exe') > $null | |
$processExclusions.Add('ServiceHub.Host.CLR.x86.exe') > $null | |
$processExclusions.Add('Microsoft.ServiceHub.Controller.exe') > $null | |
$processExclusions.Add('PerfWatson2.exe') > $null | |
$processExclusions.Add('sqlwriter.exe') > $null | |
Write-Host "This script will create Windows Defender exclusions for common Visual Studio 2022 folders and processes." | |
Write-Host "" | |
$projectsFolder = Read-Host 'What is the path to your Projects folder? (example: c:\source)' | |
Write-Host "" | |
Write-Host "Adding Path Exclusion: " $projectsFolder | |
Add-MpPreference -ExclusionPath $projectsFolder | |
foreach ($exclusion in $pathExclusions) | |
{ | |
Write-Host "Adding Path Exclusion: " $exclusion | |
Add-MpPreference -ExclusionPath $exclusion | |
} | |
foreach ($exclusion in $processExclusions) | |
{ | |
Write-Host "Adding Process Exclusion: " $exclusion | |
Add-MpPreference -ExclusionProcess $exclusion | |
} | |
Write-Host "" | |
Write-Host "Your Exclusions:" | |
$prefs = Get-MpPreference | |
$prefs.ExclusionPath | |
$prefs.ExclusionProcess | |
Write-Host "" | |
Write-Host "Enjoy faster build times and coding!" | |
Write-Host "" |
This is very helpful thank you. Can you point me to the Microsoft article that references these locations. I need it for my change control and for future review should Microsoft make changes to it.
Thanks!
Thanks!!!
Thanks!!!
You're welcome!
Thanks!
You're welcome!
Thx!
Thx!
Thx!
Thanks, this fixed my VS problem
Thanks, this fixed my VS problem
I'm glad to help
Amazing, thank you so much! This solved the copy to clipboard issue in VS.NET 2022 because of high CPU usage in Windows Defender Endpoint. 👍👍
Amazing, thank you so much! This solved the copy to clipboard issue in VS.NET 2022 because of high CPU usage in Windows Defender Endpoint. 👍👍
I'm happy to help
Great work, thank you! The only thing: I think that ServiceHub.RoslynCodeAnalysisService.exe should also be in process exclusions
Great work, thank you! The only thing: I think that ServiceHub.RoslynCodeAnalysisService.exe should also be in process exclusions
Thanks for your contribution
I ran this from a powershell v7.4.1 shell with admin rights and got this error message:
Add-MpPreference: Operation failed with the following error: 0x%1!x!
This looks very specific to your own setup,
'\Downloads\HeidiSQL_11.3_64_Portable'
Thanks!
Hi @Braytiner . I just upgraded from Windows Server 2016 Data Center Edition (AWS Workspace) to a bare metal desktop computer running Windows 11, and iisexpress.exe is incredibly slow. I don't think my IT department will allow us to add these exclusions as it adds risk for a confused deputy attack whereby an attacker uses a vulnerability in one of the dlls in one of these many paths to gain enhanced privileges to the system. Just wondering if you have any tips on troubleshooting iisexpress.exe slowness in general, as requests are taking like 30-45 seconds on my computer when calling BeginRequest. The bottleneck seems to be on Autofac Resolve but I'm sure that's a red herring as the same code on the same Autofac dependency version was working vine on Windows Server 2016 Data Center Edition. Thanks and would be happy to buy you a coffee in advance!
Hello Braytiner!
Thank you for sharing your work. I understand that the code is simple, but I'm a layman in this and I want to clarify few things. Do I understand correctly that PsExec needs to be used for silent execution? And what the code will be if the path is known. ? Without user interaction. For example "c:\dir\file.exe ". Maybe you can Pastebin it, if it's possible. Thanks, sorry for the stupid question.
Have a nice day!