param (
[string]$rutaBase,
[switch]$EliminarReglas
)
# Función para crear reglas de Firewall para bloquear conexiones
function CrearReglasDeFirewall {
param (
[string]$rutaBase
)
# Obtiene todos los archivos .exe de forma recursiva en la ruta base
$exeFiles = Get-ChildItem -Path $rutaBase -Filter *.exe -File -Recurse
# Itera a través de cada archivo .exe y crea reglas en el Firewall de Windows
foreach ($file in $exeFiles) {
$ruleName = "Block $($file.Name)"
# Crea una regla para bloquear salidas
New-NetFirewallRule -DisplayName $ruleName -Direction Outbound -Action Block -Program $file.FullName
# Crea una regla para bloquear entradas
New-NetFirewallRule -DisplayName $ruleName -Direction Inbound -Action Block -Program $file.FullName
}
Write-Host "Se han creado las reglas de Firewall para bloquear todos los archivos .exe en $rutaBase."
}
# Función para eliminar las reglas de Firewall creadas por el script
function DeshacerCambiosDeFirewall {
param (
[string]$rutaBase
)
# Obtiene todas las reglas de Firewall creadas por el script
$ruleNames = Get-NetFirewallRule | Where-Object { $_.DisplayName -like "Block *.exe" }
# Elimina las reglas una por una
foreach ($ruleName in $ruleNames) {
Remove-NetFirewallRule -Name $ruleName.Name
}
Write-Host "Se han eliminado las reglas de Firewall creadas por el script en $rutaBase."
}
# Si se pasa la flag -EliminarReglas, llama a la función para eliminar las reglas
if ($EliminarReglas) {
DeshacerCambiosDeFirewall -rutaBase $rutaBase
}
# Si no, llama a la función para crear las reglas de Firewall
else {
CrearReglasDeFirewall -rutaBase $rutaBase
}