Как написать в Windows 7 команду «сна»

1841
benwh

Для пояснения, когда я говорю о «спящем режиме», я имею в виду «гибридный спящий режим», т. Е. Сохранить содержимое оперативной памяти в файл гибернации, а затем перейти в режим ожидания.

У меня это отлично работает через меню «Пуск», но я хочу написать его в виде чего-то, что может быть запущено планировщиком заданий. Отлично, пакетный сценарий или сценарий Powershell будет хорошо работать

Я экспериментировал с PowrProf SetSuspendStateи powercfg -h offв сценариях не повезло, он всегда просто идет прямо в режиме ожидания или в спящий режим и выключается полностью

3

3 ответа на вопрос

4
martineau

Я нашел статью под названием Комбинированный спящий режим командной строки, в которой говорится, что вы можете использовать следующую команду:

rundll32 powrprof.dll,SetSuspendState 

Судя по комментариям, вы также должны убедиться, что гибридный режим сна включен в параметрах конфигурации электропитания и, возможно, также активировать гибридный режим сна в BIOS, в зависимости от вашей системы.

/ ч машина зимует, она не спит. Enigma 11 лет назад 0
@ Enigma: Ты прав. Я обновил свой ответ. martineau 11 лет назад 0
Как указано в вопросе, я не смог заставить это работать через планировщик задач benwh 11 лет назад 0
Бенху: Да, я могу читать. Важным моментом, на котором я пытался ответить, было то, что для того, чтобы он работал с планировщиком задач, может потребоваться включить его в одном или двух местах. martineau 11 лет назад 0
Если он не был правильно сконфигурирован в другом месте системы, почему Hybrid Sleep будет работать правильно при его запуске через Start -> Sleep или при использовании этой команды через приглашение run? benwh 11 лет назад 0
benwh: Первая ссылка на обсуждение, где команда `rundll32` не переводит систему в гибридный спящий режим, даже если гибридный спящий режим включен и может быть введен вручную через меню« Пуск »- из-за несоответствия настроек ACPI в BIOS, я считаю. martineau 11 лет назад 0
Вы не упомянули, используете ли вы настольный компьютер или ноутбук, но, очевидно, [гибридный спящий режим по умолчанию отключен на ноутбуках] (http://blogs.msdn.com/b/oldnewthing/archive/2011/05/10/10162728. aspx) и вам может понадобиться включить его. martineau 11 лет назад 0
3
Mr. Kennedy

Я нашел свое решение по этому ОЧЕНЬ полезному ответу пользователя @jnL (пожалуйста, добавьте его комментарий!). Он работает на моем win7 HP lappy и заставляет его "спать" так же, как если бы я выбрал Sleepв графическом интерфейсе Windows Start Menu, т.е.

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

Теперь, когда я добавил этот сценарий в свой профиль PowerShell C: \ Users \ имя_пользователя \ 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 

... когда я napзахожу по приглашению PowerShell, мой ноутбук переходит в спящий режим, вентилятор вращается, а затем, когда я двигаю мышь или нажимаю пробел (и т. д.), он выходит на экран входа в систему.

Обратите внимание, что решение rundll32.exe очевидно повреждает стек, согласно комментарию в этой теме от пользователя @accolade, ссылающегося на этот ответ: https://superuser.com/a/331545/21887

1
Jessie

Используя скрипт, упомянутый в предыдущем ответе, я переписал его, чтобы улучшить его удобство использования. Сохраните его как модуль powershell (.psm1) в папке системного профиля ($ PsHome \ Profile.ps1).

Затем создайте задание по расписанию для запуска в то время, когда вы хотите перевести компьютер в спящий режим. На вкладке действий установите параметры, которые вы хотите.

Пример:

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 

Похожие вопросы