PCをスリープモードや休止状態にする Powershell スクリプト
PCで何か長時間かかる処理をさせたあとで、自動でスリープモードになってほしいときがありました。
これをPowershellでできるようにしてみました。
遠隔地にある Windows PCにSSHで入っているときにも使えます…が、そんなことしてるひといるかな?
使うときはこんな感じで。
# この場合だと、即座にスリープモードに入ります Start-Suspend -To Sleep # 10分待機したあとでスリープする Start-Sleep -Seconds $(60*10); Start-Suspend -To Sleep # このようにすると、マウスやキー入力でスリープモードが解除されないようにできる Start-Suspend -To Sleep -DisableWakeupEvents # 休止状態にしたいときは↓ Start-Suspend -To Hibernate
以下、スクリプト。
function Start-Suspend { Param ( [parameter(Mandatory = $true)] [ValidateNotNullOrEmpty()] [ValidateSet("Sleep", "Hibernate", IgnoreCase)] [string]$To, [switch]$Force, [switch]$DisableWakeupEvents ) $signature = @' [DllImport("powrprof.dll")] public static extern bool SetSuspendState( bool bHibernate, bool bForce, bool bWakeupEventsDisabled ); '@ Add-Type -Namespace MyNameSpace -Name Power ` -MemberDefinition $signature -ErrorAction SilentlyContinue $isHibernate = $To.ToLower() -eq "hibernate" [MyNameSpace.Power]::SetSuspendState( $isHibernate, $Force, $DisableWakeupEvents) ` | Out-Null }