8
0
Skriptentwickung/test/Defender-Ausnahmen_fuer_VisualStudio.ps1

87 lines
2.4 KiB
PowerShell

# PowerShell-Skript: Visual Studio-Ausnahmen mit Logging und Fehlerprüfung
# Autor: Copilot 🛠️
# Datum: $(Get-Date -Format "yyyy-MM-dd")
# Log-Datei definieren
$logPath = "$Env:USERPROFILE\Add-VS-Defender-Ausnahmen.log"
# Funktion zum Loggen
function Write-Log {
param (
[string]$Message,
[string]$Level = "INFO"
)
$timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
$entry = "$timestamp [$Level] $Message"
Add-Content -Path $logPath -Value $entry
Write-Host $entry
}
# Funktion zum Hinzufügen einer Prozess-Ausnahme mit Prüfung
function Add-ProcessExclusion {
param (
[string]$ProcessPath
)
if (Test-Path $ProcessPath) {
try {
Add-MpPreference -ExclusionProcess $ProcessPath
Write-Log "Prozess-Ausnahme hinzugefügt: $ProcessPath"
} catch {
Write-Log "Fehler beim Hinzufügen der Ausnahme für: $ProcessPath - $_" "ERROR"
}
} else {
Write-Log "Pfad nicht gefunden: $ProcessPath" "WARNING"
}
}
# Funktion zum Hinzufügen einer Pfad-Ausnahme mit Prüfung
function Add-PathExclusion {
param (
[string]$FolderPath
)
if (Test-Path $FolderPath) {
try {
Add-MpPreference -ExclusionPath $FolderPath
Write-Log "Pfad-Ausnahme hinzugefügt: $FolderPath"
} catch {
Write-Log "Fehler beim Hinzufügen der Ausnahme für: $FolderPath - $_" "ERROR"
}
} else {
Write-Log "Pfad nicht gefunden: $FolderPath" "WARNING"
}
}
# Ausnahmen definieren
$processes = @(
"D:\ProgramFiles\Microsoft Visual Studio 2022\Common7\IDE\devenv.exe",
"D:\ProgramFiles\dotnet\dotnet.exe",
"D:\ProgramFiles\Microsoft Visual Studio 2022\MSBuild\Current\Bin\MSBuild.exe",
"D:\ProgramFiles\Microsoft Visual Studio 2022\Common7\IDE\Extensions\TestPlatform\vstest.console.exe"
)
$paths = @(
"$Env:USERPROFILE\source\repos",
"$Env:USERPROFILE\.nuget\packages",
"$Env:USERPROFILE\source\repos\*\bin",
"$Env:USERPROFILE\source\repos\*\obj"
)
# Ausnahmen hinzufügen
Write-Log "=== Start: Hinzufügen von Defender-Ausnahmen für Visual Studio ==="
foreach ($proc in $processes) {
Add-ProcessExclusion -ProcessPath $proc
}
foreach ($path in $paths) {
Add-PathExclusion -FolderPath $path
}
Write-Log "=== Ende: Alle Ausnahmen verarbeitet ==="
🔒 Hinweise:
Das Skript schreibt ein Logfile in dein Benutzerverzeichnis (Add-VS-Defender-Ausnahmen.log).