87 lines
2.4 KiB
PowerShell
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).
|
|
|