So schreiben Sie den Windows 7-Befehl "sleep"

1938
benwh

Um zu klären, wenn ich über "Schlaf" spreche, meine ich Hybrid-Schlaf, dh den Inhalt des RAM in die Ruhezustandsdatei speichern und dann in den Standby-Modus wechseln.

Ich habe dies über das Startmenü einwandfrei funktioniert, aber ich möchte es in Form von etwas Skript schreiben, das vom Taskplaner ausgeführt werden kann. Ein Exe-, Batch-Skript oder Powershell-Skript würde gut funktionieren

Ich habe mit PowrProf SetSuspendStateund powercfg -h offin Skripten ohne Glück experimentiert, es geht immer direkt in den Standby-Modus oder in den Ruhezustand und schaltet sich ganz aus

3

3 Antworten auf die Frage

4
martineau

I found an article titled Command line hybrid sleep that says you may be able to use the following command:

rundll32 powrprof.dll,SetSuspendState 

From the comments there, it sounds like you'll also need make sure Hybrid Sleep mode enabled in the Power Configuration options and perhaps Activate Hybrid Sleep in the BIOS as well, depending on your system.

/ h hiberniert die Maschine, sie schläft nicht. Enigma vor 11 Jahren 0
@Enigma: Du hast recht. Ich habe meine Antwort aktualisiert. martineau vor 11 Jahren 0
Wie in der Frage angegeben, konnte ich dies nicht über den Taskplaner erreichen benwh vor 11 Jahren 0
benwh: Ja, ich kann lesen. Ein wichtiger Punkt, auf den ich meine Antwort geben wollte, war, dass der Taskplaner möglicherweise nur an ein oder zwei Stellen aktiviert werden muss. martineau vor 11 Jahren 0
Wenn es an anderer Stelle im System nicht richtig konfiguriert wurde, warum sollte Hybrid Sleep korrekt ausgeführt werden, wenn Sie es über Start -> Sleep starten oder diesen Befehl über die Eingabeaufforderung verwenden? benwh vor 11 Jahren 0
benwh: Die erste Verknüpfung bezieht sich auf eine Diskussion, bei der der Befehl 'rundll32' das System nicht in den Hybrid-Ruhezustand versetzt, obwohl der Hybrid-Ruhezustand aktiviert ist und manuell über das Startmenü eingegeben werden kann - aufgrund einer Nichtübereinstimmung mit den ACPI-Einstellungen in das BIOS glaube ich. martineau vor 11 Jahren 0
Sie haben nicht erwähnt, ob Sie einen Desktop oder Laptop verwenden, aber anscheinend ist [Hybrid-Ruhezustand auf Laptops standardmäßig deaktiviert] (http://blogs.msdn.com/b/oldnewthing/archive/2011/05/10/10162728). aspx) und Sie müssen es möglicherweise aktivieren. martineau vor 11 Jahren 0
3
Mr. Kennedy

Ich habe meine Lösung aus dieser SEHR hilfreichen Antwort von Benutzer @jnL herausgefunden (bitte unterstütze seinen Beitrag!). Es funktioniert auf meiner win7 HP lappy und lässt es auf die gleiche Weise "schlafen", als ob ich es Sleepaus dem Windows Startmenü-GUI auswählte, dh

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

Nun, da ich dieses Skript zu meinem PowerShell-Profil C: \ Users \ Benutzername \ Documents \ WindowsPowerShell \ Microsoft.PowerShell_profile.ps1 hinzugefügt habe

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 

... wenn ich napan der PowerShell-Eingabeaufforderung eingebe, geht mein Laptop in den Ruhezustand, der Lüfter wird heruntergefahren und wenn ich die Maus bewege oder die Leertaste drücke (usw.), wird ein Anmeldebildschirm angezeigt.

Beachten Sie, dass die rundll32.exe-Lösung den Stapel anscheinend pro Benutzer in einem Kommentar in diesem Thread durch den Benutzer @accolade beschädigt, der auf diese Antwort verweist: https://superuser.com/a/331545/21887

1
Jessie

Using the script mentioned in an earlier answer, I've rewrote it to improve it's usability. Save it as a powershell module (.psm1) to the system profile folder ($PsHome\Profile.ps1).

Then create a schedule task to run at the time you want to place the computer to sleep. In the actions tab set to the parameters you want.

Example:

Powershell -ExecutionPolicy Bypass -NoLogo -NonInteractive -Command "& "

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