通过PowerShell查询并排除SQL相关进程

# 以管理员身份运行以下脚本
 
# 查询所有含"sql"的进程
$sqlProcesses = Get-Process | Where-Object { $_.Path -match "sql" } | Select-Object -ExpandProperty Path -Unique
 
# 添加到Defender排除列表
foreach ($process in $sqlProcesses) {
Add-MpPreference -ExclusionProcess $process
Write-Host "已排除进程: $process"
}
 
# 显示排除结果
Get-MpPreference | Select-Object -ExpandProperty ExclusionProcess
 
#配置防火墙排除规则

$sqlProcesses = Get-Process | Where-Object { $_.Path -match "sql" } | select-Object -Unique Path


foreach ($proc in $sqlProcesses) {
    $path = $proc.Path
    if (-not [string]::IsNullOrEmpty($path)) {
        # 添加入站规则
        New-NetFirewallRule -DisplayName "Allow SQL Inbound - $($path.Split('\')[-1])" `
            -Direction Inbound -Program $path -Action Allow
        # 添加出站规则
        New-NetFirewallRule -DisplayName "Allow SQL Outbound - $($path.Split('\')[-1])" `
            -Direction Outbound -Program $path -Action Allow
    }
}

 

#统一命令

$processname = "commvault"
 
$exchProcesses = Get-Process | Where-Object { $_.Path -match $processname } | Select-Object -ExpandProperty Path -Unique
 
foreach ($process in $exchProcesses) {
Add-MpPreference -ExclusionProcess $process
Write-Host "已排除进程: $process"
}
 
$exchProcesses = Get-Process | Where-Object { $_.Path -match $processname } | select-Object -Unique Path


foreach ($proc in $exchProcesses) {
    $path = $proc.Path
    if (-not [string]::IsNullOrEmpty($path)) {

        New-NetFirewallRule -DisplayName "Allow $processname Inbound - $($path.Split('\')[-1])" `
            -Direction Inbound -Program $path -Action Allow

        New-NetFirewallRule -DisplayName "Allow $processname Outbound - $($path.Split('\')[-1])" `
            -Direction Outbound -Program $path -Action Allow
    }
}

 
 

文章细节

文章编号:
2
添加日期:
2025-04-09 09:54:39

相关文章