# Automatizar el Plan de Energía "Alto rendimiento" en PowerShell (multilenguaje y con fallback)

- Link: https://binariocero.com/windows/automatizar-el-plan-de-energia-alto-rendimiento-en-powershell-multilenguaje-y-con-fallback
- Published: 2025-07-05T10:17:26+02:00
- Author: Juan José Fernández Durán

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

En muchos entornos profesionales y técnicos, especialmente en estaciones de trabajo
de alto rendimiento o servidores, es fundamental evitar configuraciones de ahorro
energético que puedan perjudicar el rendimiento del sistema. En este artículo te
enseño cómo automatizar la activación del plan de energía **"Alto rendimiento"**
con PowerShell, sin importar si el sistema está en español o inglés, y asegurando
que se aplica aunque el plan no esté listado.

## **Fase 1: Listar los planes de energía en CMD o PowerShell**

Para ver los planes de energía disponibles en el sistema:

### En **CMD**:

    ```wp-block-preformatted
    powercfg /l
    ```

### En **PowerShell**:

    ```wp-block-preformatted
    powercfg /l
    ```

La salida muestra todos los planes con su GUID. Ejemplo:

    ```wp-block-preformatted
    GUID del esquema: 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c  (Alto rendimiento)
    ```

## **Fase 2: Filtrar solo el plan 'Alto rendimiento' / 'High performance'**

### En CMD:

    ```wp-block-preformatted
    powercfg /l | findstr /i "Alto rendimiento"
    ```

O, en un sistema en inglés:

    ```wp-block-preformatted
    powercfg /l | findstr /i "High performance"
    ```

## **Fase 3: Extraer solo el GUID del plan (en CMD)**

Este comando extrae el GUID directamente en CMD:

    ```wp-block-preformatted
    for /f "tokens=1-7" %%a in ('powercfg /l ^| findstr /i "Alto rendimiento"') do echo %%b
    ```

En uso interactivo (no `.bat`), recuerda usar solo un `%`:

    ```wp-block-preformatted
    for /f "tokens=1-7" %a in ('powercfg /l ^| findstr /i "Alto rendimiento"') do echo %b
    ```

## **Fase 4: Extraer el GUID en PowerShell**

### Inicialmente con `-split` (no recomendado en casos multilingües):

    ```wp-block-preformatted
    $highPerfPlan = powercfg /l | Where-Object { $_ -match "Alto rendimiento" }$guid = ($highPerfPlan -split '\s+')[3]
    ```

Esto funciona si el formato es siempre el mismo, pero no es robusto en sistemas 
modificados o con otro idioma.

## **Fase 5: Versión mejorada con expresión regular y compatibilidad multilenguaje**

    ```wp-block-preformatted
    $highPerfPlan = powercfg /l | Where-Object {    $_ -match "Alto rendimiento" -or $_ -match "High performance"}if ($highPerfPlan -match "([a-f0-9\-]{36})") {    $guid = $matches[1]    powercfg /setactive $guid} else {    Write-Host "Plan no encontrado"    exit 1}
    ```

## **Fase 6: Fallback con GUID por defecto si no se encuentra el plan**

Para cubrir casos donde no aparece en la lista, se puede aplicar el GUID conocido
del plan “Alto rendimiento”:

    ```wp-block-preformatted
    if ($highPerfPlan -match "([a-f0-9\-]{36})") {    $guid = $matches[1]} else {    $guid = "8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c"}
    ```

## **Fase 7: Comandos para configurar energía**

Estos comandos desactivan suspensión, apagado de discos e hibernación:

    ```wp-block-preformatted
    powercfg /change standby-timeout-ac 0powercfg /change standby-timeout-dc 0powercfg /change disk-timeout-ac 0powercfg /change disk-timeout-dc 0powercfg /hibernate off
    ```

## **Script PowerShell final completo**

Este script aplica todo lo anterior, completamente funcional, robusto y listo para
usarse en entornos multilenguaje:

    ```wp-block-preformatted
    # Buscar línea del plan "Alto rendimiento" o "High performance"$highPerfPlan = powercfg /l | Where-Object {    $_ -match "Alto rendimiento" -or $_ -match "High performance"}# Si se encontró el plan, extraer el GUID; si no, usar GUID por defectoif ($highPerfPlan -match "([a-f0-9\-]{36})") {    $guid = $matches[1]} else {    $guid = "8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c"}# Activar el planpowercfg /setactive $guid# Desactivar suspensión del sistemapowercfg /change standby-timeout-ac 0powercfg /change standby-timeout-dc 0# Desactivar apagado de discos durospowercfg /change disk-timeout-ac 0powercfg /change disk-timeout-dc 0# Desactivar hibernaciónpowercfg /hibernate off
    ```

## ¿Cómo ejecutarlo?

 1. Guarda el script como `energia.ps1`.
 2. Abre PowerShell como **administrador**.
 3. Ejecuta: 
    `Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass .\energia.
    ps1`

## Extensiones opcionales

 * Crear el plan si no existe.
 * Guardar un log con las acciones.
 * Aplicar vía GPO, scripts de inicio o imagen de sistema.
