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:
powercfg /l
En PowerShell:
powercfg /l
La salida muestra todos los planes con su GUID. Ejemplo:
GUID del esquema: 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c (Alto rendimiento)
Fase 2: Filtrar solo el plan 'Alto rendimiento' / 'High performance'
En CMD:
powercfg /l | findstr /i "Alto rendimiento"
O, en un sistema en inglés:
powercfg /l | findstr /i "High performance"
Fase 3: Extraer solo el GUID del plan (en CMD)
Este comando extrae el GUID directamente en CMD:
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 %
:
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):
$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
$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”:
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:
powercfg /change standby-timeout-ac 0
powercfg /change standby-timeout-dc 0
powercfg /change disk-timeout-ac 0
powercfg /change disk-timeout-dc 0
powercfg /hibernate off
Script PowerShell final completo
Este script aplica todo lo anterior, completamente funcional, robusto y listo para usarse en entornos multilenguaje:
# 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 defecto
if ($highPerfPlan -match "([a-f0-9\-]{36})") {
$guid = $matches[1]
} else {
$guid = "8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c"
}
# Activar el plan
powercfg /setactive $guid
# Desactivar suspensión del sistema
powercfg /change standby-timeout-ac 0
powercfg /change standby-timeout-dc 0
# Desactivar apagado de discos duros
powercfg /change disk-timeout-ac 0
powercfg /change disk-timeout-dc 0
# Desactivar hibernación
powercfg /hibernate off
¿Cómo ejecutarlo?
- Guarda el script como
energia.ps1
. - Abre PowerShell como administrador.
- 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.