---
name: win_firewall_remove_rule
kind: function
lang: ps
domain: infra
version: "1.0.0"
purity: impure
signature: "win_firewall_remove_rule -Name <string>"
description: "Elimina una regla del firewall de Windows por nombre. Si la regla no existe, termina con éxito sin hacer nada (idempotente). Requiere privilegios de Administrador."
tags: [firewall, windows, netsh, network, infra, security, cleanup, wsl2]
uses_functions: []
uses_types: []
returns: []
returns_optional: false
error_type: "error_go_core"
imports: []
params:
  - name: Name
    desc: "Nombre exacto de la regla a eliminar"
output: "Void - elimina regla del firewall de Windows, idempotente (no falla si no existe)"
tested: false
tests: []
test_file_path: ""
file_path: "powershell/functions/infra/win_firewall_remove_rule.ps1"
---

## Uso

```powershell
# Desde PowerShell (como Administrador)
.\win_firewall_remove_rule.ps1 -Name "CDP-9222"
```

```bash
# Desde WSL2
powershell.exe -ExecutionPolicy Bypass -File win_firewall_remove_rule.ps1 -Name "CDP-9222"
```

## Parametros

| Parametro | Tipo   | Obligatorio | Descripcion                       |
|-----------|--------|-------------|-----------------------------------|
| `-Name`   | string | si          | Nombre exacto de la regla a eliminar |

## Notas

- Requiere ejecutarse como **Administrador** en Windows.
- Idempotente: si la regla no existe, sale con exit code 0 y mensaje informativo.
- Complementa `win_firewall_add_rule` para teardown limpio de reglas temporales.
- Retorna exit code 0 si tuvo éxito (o la regla no existía), 1 si hubo error.
