【PowerShell】コマンドでスリープする方法
閉じる
閉じる

新しい記事を投稿しました。シェアして読者に伝えましょう

×

【PowerShell】コマンドでスリープする方法

2019-11-23 14:34
    PowerShell -Command "Add-Type -Assembly System.Windows.Forms;[System.Windows.Forms.Application]::SetSuspendState('Suspend', $false, $false);"

    コマンドでスリープする方法を調べてみると、rundll32.exeを使った誤った方法やら、スクリプトを使う方法などといったものは見つかりますが、ファイルを作ることなく正しくスリープできる方法を結局見つけることができず、いろいろ模索した結果が上のコマンドです。

    PowerShellスクリプトを使った方法で、まず最初に見つかったのはWindows APIを呼び出すタイプのもの。

    $signature = @"
    [DllImport("powrprof.dll")]
    public static extern bool SetSuspendState(bool Hibernate,bool ForceCritical,bool DisableWakeEvent);
    "@
    $func = Add-Type -memberDefinition $signature -namespace "Win32Functions" -name "SetSuspendStateFunction" -passThru
    $func::SetSuspendState($false,$false,$false)

    これをps1ファイルにすることなく実行する手段がよくわかりませんでした(´・ω・`)
    仮にできたとして、ショートカットに使える文字数は限られているので、多分このスクリプトを利用することはやはりできない。(ちなみに、文字数の制限を超えるにはバッチファイル等を使って呼び出せばいいけど、それではファイルを作ってしまうので不採用)

    もう少し調べてみると、.netにも同じ役割を持つApplication.SetSuspendStateメソッドが存在しているので、これを利用してpowershell.exeの-Commandオプションを用いた実行が可能となりました。それがこの記事冒頭に記載しているコマンドとなります。

    Application.SetSuspendState(PowerState, Boolean, Boolean) メソッド


    広告
    コメントを書く
    コメントをするには、
    ログインして下さい。