Como fazer o script do comando 'sleep' do Windows 7

3

Para esclarecer, quando estou falando sobre 'Sleep', quero dizer Hybrid Sleep, ou seja, salve o conteúdo da RAM no arquivo de hibernação e, em seguida, entre no modo de espera.

Eu tenho isso funcionando perfeitamente bem através do menu Iniciar, mas quero script-lo na forma de algo que pode ser executado pelo Agendador de Tarefas. Um exe, script em lote ou script Powershell funcionaria bem

Eu experimentei com PowrProf SetSuspendState e powercfg -h off em scripts sem sorte, ele sempre vai direto para o modo de espera ou hiberna e desliga completamente

    
por benwh 13.11.2012 / 23:00

3 respostas

3

Eu descobri a minha solução de esta resposta muito útil pelo usuário @ jnL (por favor vote sua contribuição!) Ele funciona no meu win7 HP lappy e faz com que ele" dormir "da mesma forma como se eu tivesse selecionado Sleep do Windows Iniciar Menu GUI, ou seja,

Keeps your session in memory and puts the computer in
a low-power state so that you can quickly resume
working.

Agora que adicionei este script ao meu perfil do PowerShell, C: \ Usuários \ nome_do_usuário \ Documents \ WindowsPowerShell \ Microsoft.PowerShell_profile.ps1

function sleepy_time {
Add-Type -AssemblyName System.Windows.Forms
$PowerState = [System.Windows.Forms.PowerState]::Suspend;
$Force = $false;
$DisableWake = $false;
[System.Windows.Forms.Application]::SetSuspendState($PowerState, $Force, $DisableWake);
}

new-alias -name nap -value sleepy_time

... quando eu digito nap no prompt do PowerShell meu laptop vai dormir, o ventilador gira e quando eu movo o mouse ou pressiono a barra de espaço (etc ...) ele acorda para uma tela de login. / p>

Observe que a solução rundll32.exe aparentemente corrompe a pilha, por um comentário em este thread pelo usuário @accolade referenciando esta resposta: link

    
por 24.08.2016 / 01:31
4

Eu encontrei um artigo intitulado Linha de comando híbrida sleep que diz que você pode usar o seguinte comando:

rundll32 powrprof.dll,SetSuspendState

A partir dos comentários, parece que você também precisará garantir que o modo de suspensão híbrida esteja ativado nas opções de configuração de energia e talvez Ativar o sono híbrido no BIOS também, dependendo do seu sistema.

    
por 13.11.2012 / 23:47
1

Usando o script mencionado em uma resposta anterior, reescrevi-o para melhorar sua usabilidade. Salve-o como um módulo PowerShell (.psm1) na pasta de perfil do sistema ($ PsHome \ Profile.ps1).

Em seguida, crie uma tarefa de agendamento para ser executada no momento em que você deseja colocar o computador em suspensão. Na guia ações, defina os parâmetros desejados.

Exemplo:

Powershell -ExecutionPolicy Bypass -NoLogo -NonInteractive -Command "& {nap -PowerState Hibernate}"

function Suspend_Computer {
<#
.Synopsis
    Sets the computer to a specified power mode.
.Description
    The computer will be placed either in sleep or hibernation modes.
.Example
    C:\PS>Suspend_Computer
    Description
    -----------
    The command will run using default parameters which are not force the action of Suspend.
.Example
    C:\PS>Suspend_Computer -Force $True -PowerState Hibernate
    Description
    -----------
    The computer will save all data to disk and hibernate.
.Link
    https://superuser.com/questions/505247/how-to-script-the-windows-7-sleep-command
#>
Param(
[Parameter(Mandatory =$False,Position=0)]
$Force = $False,

[Parameter(Mandatory=$False,Position=1)]
$DisableWake = $False,

[Parameter(Mandatory=$False,Position=2)]
[ValidateSet("Suspend","Hibernate")]
[string]$PowerState = 'Suspend'
)
    Add-Type -AssemblyName System.Windows.Forms
    $PowerState = [System.Windows.Forms.PowerState]::$PowerState;
    [System.Windows.Forms.Application]::SetSuspendState($PowerState, $Force, $DisableWake);
}

new-alias -name nap -value Suspend_Computer
    
por 12.09.2017 / 06:14