PowerShell에서 일시 중지 또는 최대 절전 모드
Windows PowerShell을 사용하여 컴퓨터를 일시 중단하거나 최대 절전 모드로 전환하는 데 관심이 있습니다.이를 어떻게 달성합니까?
나는 이미 알고 있습니다.Stop-Computer
그리고.Restart-Computer
cmdlet은 상자 밖에 포함되어 있지만, 이것들은 내가 추구하는 기능을 달성하지 못합니다.
사용할 수 있습니다.SetSuspendState
메소드 온 더System.Windows.Forms.Application
이것을 이루기 위한 수업. 더.SetSuspendState
method는 static method 입니다.
다음과 같은 세 가지 매개 변수가 있습니다.
- 주
[System.Windows.Forms.PowerState]
- 힘.
[bool]
- wakeEvent 사용 안 함
[bool]
전화하기SetSuspendState
방법:
# 1. Define the power state you wish to set, from the
# System.Windows.Forms.PowerState enumeration.
$PowerState = [System.Windows.Forms.PowerState]::Suspend;
# 2. Choose whether or not to force the power state
$Force = $false;
# 3. Choose whether or not to disable wake capabilities
$DisableWake = $false;
# Set the power state
[System.Windows.Forms.Application]::SetSuspendState($PowerState, $Force, $DisableWake);
이를 보다 완벽한 기능으로 전환하면 다음과 같이 보일 수 있습니다.
function Set-PowerState {
[CmdletBinding()]
param (
[System.Windows.Forms.PowerState] $PowerState = [System.Windows.Forms.PowerState]::Suspend
, [switch] $DisableWake
, [switch] $Force
)
begin {
Write-Verbose -Message 'Executing Begin block';
if (!$DisableWake) { $DisableWake = $false; };
if (!$Force) { $Force = $false; };
Write-Verbose -Message ('Force is: {0}' -f $Force);
Write-Verbose -Message ('DisableWake is: {0}' -f $DisableWake);
}
process {
Write-Verbose -Message 'Executing Process block';
try {
$Result = [System.Windows.Forms.Application]::SetSuspendState($PowerState, $Force, $DisableWake);
}
catch {
Write-Error -Exception $_;
}
}
end {
Write-Verbose -Message 'Executing End block';
}
}
# Call the function
Set-PowerState -PowerState Hibernate -DisableWake -Force;
참고: 제 테스트에서,-DisableWake
옵션은 제가 알고 있는 어떤 뚜렷한 차이도 만들어내지 못했습니다.이 매개 변수가 다음과 같이 설정되었을 때에도 키보드와 마우스를 사용하여 컴퓨터를 깨울 수 있었습니다.$true
.
이것들이 유용하기를 바랍니다.
종료%windir%\System32\shutdown.exe -s
재부팅%windir%\System32\shutdown.exe -r
로그오프%windir%\System32\shutdown.exe -l
옆에서 대기하세요%windir%\System32\rundll32.exe powrprof.dll,SetSuspendState Standby
동면%windir%\System32\rundll32.exe powrprof.dll,SetSuspendState Hibernate
편집: @mica가 코멘트에서 지적한 것처럼, 서스펜드(수면)는 실제로 동면합니다.이것은 윈도우 8 이상에서 발생하는 것으로 보입니다.'sleep'을 사용하려면 최대 절전 모드를 해제하거나 외부 Microsoft 도구(내장되지 않음)를 가져옵니다. "Microsoft의 Sysinternals 도구 중 하나는 명령을 사용하여 PsShutdown입니다.psshutdown -d -t 0
동면이 아닌 올바르게 잠을 잘 수 있습니다." 출처: https://superuser.com/questions/42124/how-can-i-put-the-computer-to-sleep-from-command-prompt-run-menu
종료 실행 파일을 C:로 사용합니다.\Windows\시스템32
shutdown.exe /h
이것을 원라이너로 줄이려고 했는데 오류가 났습니다.제 해결책은 이렇습니다.
[Void][System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
[System.Windows.Forms.Application]::SetSuspendState("Hibernate", $false, $false);
언급URL : https://stackoverflow.com/questions/20713782/suspend-or-hibernate-from-powershell
'programing' 카테고리의 다른 글
자바스크립트에서 이미지를 캐시하는 방법 (0) | 2023.09.13 |
---|---|
커서를 선언하는 올바른 방법은 무엇입니까? (0) | 2023.09.13 |
Should I use Vagrant or Docker for creating an isolated environment? (0) | 2023.09.13 |
Android에서 다른 조각으로 이동한 후 탐색 스택을 지우는 방법 (0) | 2023.09.13 |
행이 없는 경우 행을 삽입하는 방법, 그렇지 않으면 MariaDB에서 두 경우 모두 ID를 선택하고 반환하는 방법은 무엇입니까? (0) | 2023.09.13 |