Загрузка данных


# 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."
}