foreach ($file in $files) try Where-Object $_.Name -eq "Zone.Identifier" ) if ($hasZoneId) if ($WhatIf) Write-Host "[WHATIF] Would unblock: $($file.FullName)" -ForegroundColor Yellow else Unblock-File -Path $file.FullName -ErrorAction Stop Write-Host "[UNBLOCKED] $($file.FullName)" -ForegroundColor Green $unblockedCount++ catch Write-Warning "Failed to unblock: $($file.FullName) - $_"
$unblockedCount = 0
# Get files $allFiles = Get-ChildItem -Path $Path -File -Recurse -ErrorAction SilentlyContinue recursively unblock files powershell
Write-Host "Scanning: $targetPath" -ForegroundColor Cyan foreach ($file in $files) try Where-Object $_
if ($extensions.Count -gt 0) $files = $allFiles else $files = $allFiles recursively unblock files powershell
$total = $files.Count $processed = 0 $unblocked = 0 $results = @()
# Clear or create log "=== Recursive Unblock Log - $(Get-Date) ===" # Basic usage - unblock everything in current folder and subfolders Unblock-FilesRecursively Specify a different path Unblock-FilesRecursively -Path "C:\Downloads" Only unblock PowerShell scripts and executables Unblock-FilesRecursively -Path "D:\Projects" -IncludeExtensions @("ps1", "exe") Preview what would be unblocked without actually doing it Unblock-FilesRecursively -WhatIf Advanced version with logging and progress Invoke-RecursiveUnblock -Path "C:\Users$env:USERNAME\Downloads" -Filter "Executables" -ShowProgress With confirmation prompt Invoke-RecursiveUnblock -Path "." -WhatIf Quick Alias for Frequent Use Add to your PowerShell profile: