# pidor_new_ebalka
$DoIt = $false # сначала проверка; для удаления поставь $true
$keepPattern = '(?i)\\Tensor\\Saby(\\|$)'
$folderPatterns = @(
'(?i)\\AmneziaVPN(\\|$)',
'(?i)\\Radmin VPN(\\|$)',
'(?i)\\Radmin_VPN(\\|$)',
'(?i)\\PlanetVPN(\\|$)',
'(?i)\\FreeVPNPlanet(\\|$)',
'(?i)\\FreeVPN-fastSecureVPN(\\|$)',
'(?i)\\TouchVPN(\\|$)',
'(?i)\\iTop VPN(\\|$)',
'(?i)\\ITOP3(\\|$)',
'(?i)\\ProtonVPN(\\|$)',
'(?i)\\VPN Tokens(\\|$)',
'(?i)\\Plugin VPN Client Manager(\\|$)',
'(?i)\\vpn-client-manager(\\|$)',
'(?i)\\vpn(\\|$)'
)
$roots = @(
$env:ProgramFiles,
${env:ProgramFiles(x86)},
$env:ProgramData,
$env:LOCALAPPDATA,
$env:APPDATA
) | Where-Object { $_ -and (Test-Path $_) }
$folders = Get-ChildItem -Path $roots -Recurse -Force -Directory -ErrorAction SilentlyContinue |
Where-Object {
$p = $_.FullName
($p -notmatch $keepPattern) -and ($folderPatterns | Where-Object { $p -match $_ })
}
# Показать, что будет удалено
$folders | Select-Object FullName
if ($DoIt) {
$folders | Sort-Object FullName -Descending | Remove-Item -Recurse -Force -ErrorAction SilentlyContinue
Write-Host "Готово."
} else {
Write-Host "Это только проверка. Для удаления поставь `$DoIt = `$true."
}