# Recuperar la clave Wi‑Fi con PowerShell en Windows 10/11

- Link: https://binariocero.com/windows/recuperar-la-clave-wifi-con-powershell-en-windows-10-11
- Published: 2025-08-28T07:30:50+02:00
- Author: Juan José Fernández Durán

![Loading](https://binariocero.com/wp-content/plugins/page-views-count/ajax-loader-
2x.gif)

Este artículo explica varios métodos para **ver la contraseña (clave)** de redes
Wi‑Fi guardadas en Windows usando **PowerShell**. Incluye un comando rápido para
un SSID concreto, un procedimiento para listar todos los perfiles y un script avanzado
que exporta y lee perfiles de manera robusta (independiente del idioma del sistema).

> **Responsabilidad y privacidad**: Solo debes consultar claves de redes que administras
> o para las que tienes permiso. Los comandos muestran contraseñas en texto claro.

## Requisitos

 * Windows 10 u 11.
 * PowerShell 5.1 o PowerShell 7.x.
 * Consola con permisos estándar. Para exportar perfiles a disco puede requerirse
   ejecutar **como administrador**.

## Método 1 — Comando rápido para un SSID concreto

Si conoces el nombre de la red (SSID), puedes imprimir su clave directamente:

# Sustituye "MiSSID" por el nombre exacto del perfil Wi‑Fi 
`netsh wlan show profile
name="MiSSID" key=clear`

Busca en la salida la sección **Key Content** / **Contenido de la clave**. Si no
aparece, el perfil puede no tener clave o tu usuario no tiene permisos suficientes.

> Sugerencia: si no recuerdas el nombre exacto del SSID, lista todos los perfiles
> con `netsh wlan show profiles`.

## Método 2 — Listar y consultar perfiles guardados

 1. **Listar perfiles Wi‑Fi almacenados:**
    `netshwlanshowprofiles`
 2. **Consultar la clave de un perfil específico:**
    `netshwlanshowprofilename="NOMBRE_DEL_PERFIL"
    key=clear`

> Nota: los literales en la salida de `netsh` cambian según el idioma de Windows.
> Este método funciona en cualquier idioma, pero los títulos de los campos (p. ej.,
> _All User Profile_ / _Perfiles de todos los usuarios_) varían.

## Método 3 — Script PowerShell para obtener **todas** las claves

El siguiente script exporta todos los perfiles Wi‑Fi a XML con la clave en claro,
y luego analiza esos XML para mostrar una tabla con SSID, autenticación, cifrado
y clave. Este enfoque es **más robusto** porque no depende del idioma de la salida
de `netsh`.

    ```wp-block-code
    # Crear carpeta temporal para exportación
    $timestamp = Get-Date -Format 'yyyyMMdd-HHmmss'
    $exportDir = Join-Path $env:TEMP "wlan-profiles-$timestamp"
    $null = New-Item -ItemType Directory -Path $exportDir -Force


    # Exportar todos los perfiles con clave en claro
    # Puede requerir consola elevada (Administrador) en algunos entornos
    $exportCmd = "netsh wlan export profile key=clear folder=\"$exportDir\""
    $null = Invoke-Expression $exportCmd


    # Analizar cada XML exportado
    $results = Get-ChildItem -Path $exportDir -Filter '*.xml' | ForEach-Object {
    try {
    [xml]$xml = Get-Content -LiteralPath $_.FullName -ErrorAction Stop
    [pscustomobject]@{
    Perfil = $xml.WLANProfile.name
    Autenticacion = $xml.WLANProfile.MSM.security.authEncryption.authentication
    Cifrado = $xml.WLANProfile.MSM.security.authEncryption.encryption
    Clave = $xml.WLANProfile.MSM.security.sharedKey.keyMaterial
    ArchivoXML = $_.FullName
    }
    }
    catch {
    Write-Warning "No se pudo leer $($_.FullName): $($_.Exception.Message)"
    }
    }


    # Mostrar resultados en tabla ordenada por nombre de perfil
    $results | Sort-Object Perfil | Format-Table -AutoSize


    # Opcional: exportar a CSV sin exponer la clave por defecto
    #$results | Select-Object Perfil,Autenticacion,Cifrado #| Export-Csv "$exportDir\\wifi_perfiles_sin_clave.csv" -NoTypeInformation -Encoding UTF8


    # Si necesitas exportar la clave (bajo tu responsabilidad):
    #$results | Export-Csv "$exportDir\\wifi_perfiles_con_clave.csv" -NoTypeInformation -Encoding UTF8


    Write-Host "\nPerfiles exportados en: $exportDir" -ForegroundColor Cyan
    ```

**Ventajas de este método**

 * Independiente del idioma de Windows (los datos vienen del XML de perfil).
 * Te da una visión completa de todos los perfiles y sus parámetros de seguridad.
 * Puedes conservar evidencias (CSV) o limpiar los archivos cuando termines.

**Limpieza (opcional):**

# Eliminar los XML exportados si ya no los necesitas

`Remove-Item -LiteralPath$exportDir -Recurse -Force`

## Método 4 — Obtener la clave del **SSID actualmente conectado**

Este fragmento detecta el SSID activo y muestra su clave:

    ```wp-block-code
    # Detectar SSID activo mediante netsh (puede variar por idioma)
    $ifaceText = netsh wlan show interfaces
    $ssid = ($ifaceText | Select-String -Pattern 'SSID\s*:\s*(.+)$' -CaseSensitive:$false).Matches.Groups[1].Value.Trim()


    if ([string]::IsNullOrWhiteSpace($ssid)) {
    Write-Error 'No se pudo determinar el SSID activo. ¿Estás conectado a una red Wi‑Fi?'
    } else {
    Write-Host "SSID actual: $ssid" -ForegroundColor Cyan
    netsh wlan show profile name="$ssid" key=clear
    }
    ```

> Si el sistema está en español y el patrón anterior no encuentra el SSID (por el
> cambio de etiquetas), utiliza el **Método 3** para evitar depender del idioma.

## Errores comunes y soluciones

 * **La clave no aparece:** Asegúrate de añadir `key=clear`. Algunos entornos corporativos
   restringen la lectura de claves.
 * **Acceso denegado / necesitas privilegios elevados:** Ejecuta PowerShell como**
   Administrador**.
 * **El perfil no existe:** Comprueba el nombre exacto con `netsh wlan show profiles`.
 * **Salida ilegible por idioma/localización:** Preferir el **Método 3** (exportar
   + XML).

## Buenas prácticas

 * No dejes archivos con claves en claro en discos compartidos. Borra `$exportDir`
   al terminar.
 * Si debes registrar evidencia, guarda solo lo necesario y protege el CSV con controles
   de acceso.
 * Evita pegar claves en canales no cifrados o tickets sin clasificación adecuada.

## Apéndice — One‑liner para todas las claves

> **Úsalo con cuidado**. Exporta y muestra todas las claves en la misma consola.

`$dir=Join-Path$env:TEMP"wlan-$(Get-Date -f yyyyMMddHHmmss)"; $null=New-Item -ItemTypeDirectory-
Path$dir -Force; netshwlanexportprofilekey=clearfolder="$dir" | Out-Null; Get-ChildItem
$dir -Filter *.xml | % { $x=[xml](Get-Content$_.FullName); [pscustomobject]@{Perfil
=$x.WLANProfile.name;Clave=$x.WLANProfile.MSM.security.sharedKey.keyMaterial} } 
| ft -AutoSize`

### Conclusión

Tanto el comando directo (`netsh wlan show profile name=... key=clear`) como el 
enfoque de **exportar y analizar** perfiles con PowerShell resuelven la recuperación
de claves Wi‑Fi guardadas. Para entornos heterogéneos o scripts reutilizables, el
método basado en XML ofrece mayor estabilidad y control.
