.png)
He creado 2 tareas para dormir y despertar siguiendo esta guía:https://www.groovypost.com/howto/schedule-wake-sleep-windows-automatically/
Si ejecuto la tarea de suspensión de forma independiente, la PC entra en suspensión y se activa mediante un evento de movimiento del mouse.
Si programo la tarea de activación y configuro el botón del teclado del PC en modo de suspensión, se activará según la tarea programada.
Por lo tanto, las tareas funcionan muy bien de forma independiente, pero no en una cadena de eventos de tareas.
Lo que he probado:
- desactivar la hibernación mediante
powercfg -h off
- temporizadores de activación permitidos (establecidos en Habilitado) en Configuración -> Opciones de energía
- habilitó todo en BIOS relacionado con temporizadores de eventos y despertares
- utilizó pausas entre tareas de dormir y despertar de más de 5 minutos
- chamán baila con una pandereta
Capturas de pantalla adicionales:
El software descargable no es una opción. El mismo comportamiento en PC y portátil. La lucha continúa durante 2 días hasta el momento...
Respuesta1
$script = '$signature = @"
[DllImport("powrprof.dll")]
public static extern bool SetSuspendState(bool Hibernate,bool ForceCritical,bool DisableWakeEvent);
"@
$func = Add-Type -memberDefinition $signature -namespace "Win32Functions" -name "SetSuspendStateFunction" -passThru
$func::SetSuspendState($false,$true,$false)'
$bytes = [System.Text.Encoding]::Unicode.GetBytes($script)
$encodedCommand = [Convert]::ToBase64String($bytes)
$action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-encodedCommand $encodedCommand"
$trigger = New-ScheduledTaskTrigger -Daily -DaysInterval 1 -At 16:43
Register-ScheduledTask -TaskName "Sleep" -Action $action -Trigger $trigger -Force
$action = New-ScheduledTaskAction -Execute "cmd.exe" -Argument "/c echo hello"
$settings = New-ScheduledTaskSettingsSet -WakeToRun
$trigger = New-ScheduledTaskTrigger -Daily -DaysInterval 1 -At 16:44
Register-ScheduledTask -TaskName "Wake" -Action $action -Settings $settings -Trigger $trigger -Force
Funciona de maravilla :)
Además, NO UTILICE RUNDLL32 porque
Rundll32 solo puede llamar a funciones desde una DLL que esté explícitamente escrita para ser llamada por Rundll32.
https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/rundll32#remarks