コマンドラインからWindows PCを停止(スリープなど)する方法


コマンドでPCをスリープや休止状態にする方法を紹介します。リモートデスクトップで接続中はスタートメニューで「ログオフ」、「切断」、「ロック」しか選択できないため、ここで紹介する方法が役に立つことがあります。

逆にリモートのマシンを起動したい場合には、以下の記事をご覧ください。
Wake On Lan についてのまとめ (リモートのマシンを起動)

リモートデスクトップで接続中に Ctrl + Alt + End を押すと、接続先で Ctrl + Alt + Del を押した場合と同様に、シャットダウンや再起動、スリープを選択・実行できます。デスクトップで Alt + F4 でも良いです。

P8Z68 等のマザーボードでは、BIOSの設定で internal PLL overvoltage を Disable にしないとスリープから復帰できないようです。私の環境ではスリープからの復帰時に画面が映りませんでした。(P8Z68-V PRO)

シャットダウン

shutdown コマンドで可能です。

> shutdown /s

30秒後にシャットダウンします。

スリープ・休止 (お勧めしない方法)

以下のコマンドでスリープまたは休止状態へ移行できます。

> rundll32.exe PowrProf.dll,SetSuspendState
  • 休止状態機能が有効だと休止状態になります。
  • 休止状態機能が無効だとハイブリッドスリープではなく、従来のスタンバイの様な状態になります。

お勧めしない理由

  • この方法でスリープへ移行した場合、ハイブリッドスリープにはなりません。 したがって、電源が切れるとメモリ上のデータが失われます。
  • この方法でスリープ(スタンバイ)へ移行した場合、タスクスケジューラからの自動復帰ができないことがあるようです。
    手元の Windows7 では問題なく自動復帰できることを確認しました。

■休止状態機能の有効・無効を切り替える方法

コマンドプロンプトを管理者として実行し、次のコマンドを入力する。

  • 有効にする場合

    > powercfg /hibernate on
    
  • 無効にする場合

    > powercfg /hibernate off
    
  • 現在の設定を確認する場合

    > powercfg /a
    

スリープ・休止 (お勧めの方法)

PowrProf.dll の SetSuspendState 関数を適切なパラメータを指定して呼び出します。
この方法だとタスクスケジューラからの自動復帰も問題ありませんし、ハイブリッドスリープと休止を自由に使い分けることができます。

以下の Ruby スクリプトにより可能です。
ダウンロードしてご利用ください。拡張子が exe の方であれば、Ruby をインストールしていなくても実行できます。(Exerbで変換したものです。)

  • スリープモードへ移行する場合
    require "fiddle/import" require 'fiddle/types' module Powrprof extend Fiddle::Importer dlload 'powrprof.dll' include Fiddle::Win32Types extern "BOOL SetSuspendState(BOOL, BOOL, BOOL)" end Powrprof.SetSuspendState(0, 0, 0)
    require 'Win32API' Win32API.new('powrprof.dll', 'SetSuspendState', %w(i i i), 'i').call(0, 0, 0)

    ダウンロード

  • 休止状態へ移行する場合
    require "fiddle/import" require 'fiddle/types' module Powrprof extend Fiddle::Importer dlload 'powrprof.dll' include Fiddle::Win32Types extern "BOOL SetSuspendState(BOOL, BOOL, BOOL)" end Powrprof.SetSuspendState(1, 0, 0)
    require 'Win32API' Win32API.new('powrprof.dll', 'SetSuspendState', %w(i i i), 'i').call(1, 0, 0)

    ダウンロード

パラメータの詳細についてはこちらを参照
http://msdn.microsoft.com/en-us/library/aa373201(v=vs.85).aspx

Rubyスクリプトを実行するにはあらかじめRubyをインストールしておく必要があります。
http://www.ruby-lang.org/ja/downloads/#label-1

jQuery(function($){ $('.tabset').tabs({}); });

[amazon asin="4822234630" /] [amazon asin="4822234312" /] [amazon asin="4839926689" /]

カテゴリー: 記事 タグ: , , , パーマリンク

15 Responses to コマンドラインからWindows PCを停止(スリープなど)する方法

  1. ピンバック: 2011年08月01日(月)の日常 - okaz::だめにっき

  2. Daisuke のコメント:

    悩みがこのページで解決しました

    「スリープ・休止 (お勧めしない方法)」で おっしゃる通り タスクスケジューラからの自動復帰(2003Server)が出来なくて困っていたところでした 「hibernate.exe」を使わせていただいた所  問題なく 自動休止→タスクスケジューラ自動復帰 が出来ました ありがとうございます

  3. ピンバック: Wake On Lan についてのまとめ | TipsZone

  4. nodahi のコメント:

    Windows8で「suspend.exe」を利用させていただき、大変便利です。 有益な情報・技術を本当にありがとうございました。

  5. ピンバック: スタンバイからのWake On LAN 有効化パッチ thinkpad

  6. kimtaka のコメント:

    私もタスクスケジューラからの自動復帰(WindowsXP)が出来なくて、困ってました。たすかりました、ありがとうございます。

  7. 匿名 のコメント:

    すばらしいです。通常のGUIでのSUSPENDから復帰するのはうまくいくのに、rundll32.exe だと失敗するので困っていました。ありがとうございました。

  8. 佐々木睦男 のコメント:

    suspend.exe 発見して試してみました。使わせていただきます。必要なので助かりました。

  9. ひろ! のコメント:

    win7で自宅サーバーを使用する際に、hibernate.exeを使用したいと思います。ご教授願えれば、指定時間に休止から復帰する実行ファイルはないでしょうか?インターネットで探しましたが、復帰した後何かプログラムを実行しなければならず、サーバーなので、ただ単純に復帰だけしたいのですが、いい方法はありませんか? 宜しくお願いします。

  10. NORI のコメント:

    以下の記事を参考にしていただくと、休止から復帰できると思います。

    Windows PC を目覚まし時計として使う方法

    復帰後に何も実行したくないとのことですが、「操作」のところで「プログラムの開始」を選択し、プログラムとして "" (ダブルクォート2個)を指定しておけば良さそうです。

    私の PC で確認したところ、何も実行されずスリープから復帰できました。

  11. 匿名 のコメント:

    windows10で機能します。 suspend.exeのショートカットを作り、タスクバーにピン留めしました。 アイコンも変更し、「このファイルを開く前に常に確認する(W)」もオフにしています。

  12. ピンバック: [技術ネタ]タスクスケジューラーでプログラムの実行を自動化(Windows10) | non-classic株式会社(ノンクラシック株式会社)

  13. ピンバック: [技術ネタ]タスクスケジューラでプログラムの実行を自動化(Windows10) | non-classic株式会社(ノンクラシック株式会社)

  14. 匿名 のコメント:

    ありがたく使わせていただきます。

  15. キタロー のコメント:

    イメージしていた内容と合致したのでとても嬉しいです。suspend.exe 使用させていただきます。

コメントを残す