PCをスタンバイ状態にするためのスクリプトを紹介しつつ助言を求めます。
使っているPCの1台をスタンバイ状態にしたい時があるのですが、
このPCはスタンバイ状態にしても、マウス(USB接続)が動くと起き上がってしまいます。
BIOS設定とかでそれを回避するようにしたいのですが方法がわからない状況です。
このPCにはキーボード・モニタ・マウス切替器がついています。
そして対象のPC以外に切り替えてしまえばマウスを動かしても起き上がらないので
そういう状態にしてしまえば問題はありません。
でも、スタートメニューなどから操作してスタンバイにしつつ、
切替器本体のスイッチを微妙なタイミングで押すというのは至難の業です(笑)
キーボードの切り替えホットキーというわけにもいきません。
その操作自体で起き上がったりしてわけがわからなくなります。
そこで、走らせてしばらくしてからスタンバイを行ってくれるスクリプトが欲しくなりました。
ところが、いろいろ調べたのですが、スタンバイ状態にするための方法がわかりません。
WMIとかいろいろみたのですが・・・
shutodown.exe にスタンバイオプションがあれば簡単なのに。
しかたがないのでシャットダウンダイアログを呼び出して
キーボードイベントを送るという方法を使っています。
何かもっとまともな良い手段はないものでしょうか。
[void][Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms')
$wfs = [Windows.Forms.SendKeys]
[void][Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic')
$vbi = [Microsoft.VisualBasic.Interaction]$sh = New-Object -com Shell.Application
$sh.ShutdownWindows()
Start-Sleep 1
$vbi::AppActivate('Windows のシャットダウン')
Start-Sleep 10
$wfs::SendWait('{DOWN}{DOWN}{DOWN}{ENTER}')
コメント
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
[System.Windows.Forms.Application]::SetSuspendState( [System.Windows.Forms.PowerState]"Suspend", "FALSE", "FALSE")
で、スタンバイできませんか?
スタンバイできました。
ありがとうございます。
これですっきり。
マウスを動かしてもスタンバイから回復しないようにするには、
[デバイスマネージャー]で[マウスのプロパティウインドウ]を開いて[電源の管理]タブにある
[このデバイスでコンピュータのスタンバイ状態を解除できるようにする]の
チェックボックスをオフにすればできます。
今対象に考えているPC(XP)には、
なぜか電源の管理タブがありません。
同機種でも存在するものがあるのに。
さらに・・・
改めて確認してみたら
マウスでは起き上がらなくなっていました。
なぜだろう?
ということでハードウェアとOSの設定には
すっきりしなさは残っていますが、
PowerShell がらみの話題ではなさそうです。。。
とおりすがーり さんに SetSuspendState を、
yama さんにはマウスのプロパティに設定があることを
教えていただき助かりました。
ありがとうございます。