PowerShellを使用してシステムの電源ボタンの動作をカスタマイズする方法という問いには、powercfgで現在のプランとインデックスを読み、求めるACまたはDC側だけを変更してプランを再適用するという方法で答えます。Power Button Actionの設定値は0=何もしない、1=スリープ、2=休止状態、3=シャットダウンである。AC用とDC用は別のインデックスを持つ。この記事ではアクティブ電源プランGUID、SUB_BUTTONS、PBUTTONACTION、AC/DC区分、現在インデックスを組にするを判断軸にし、実行前の確認、記事固有のコード、合否判定、戻し方を一続きで示します。
スリープ時間や休止状態の可否ではなく、物理電源ボタンの短押しに限定する。完了は「query結果が承認インデックスとなり、実機テストで一回押した動作が意図どおりで、長押しの強制電源断と混同しない」と定義します。対象が取れない場合は「エイリアスが解決しない機種ではGUID表示と対応する設定サブグループを確認し、推測した数値を入れない」として切り分け、推測で成功扱いにしません。
AC電源とバッテリーを分けて考える
powercfgで現在のプランとインデックスを読み、求めるACまたはDC側だけを変更してプランを再適用する。電源ボタンを押したときの動作ではこの進め方により、操作したという事実ではなく、期待する状態へ到達したかでタイトルの問いへ答えられます。スリープ時間や休止状態の可否ではなく、物理電源ボタンの短押しに限定する。
AC電源とバッテリーを分けて考えるの合格条件は、query結果が承認インデックスとなり、実機テストで一回押した動作が意図どおりで、長押しの強制電源断と混同しないことです。作業時刻、実行ユーザー、端末名を添え、判断に使った値が後から追える形にします。
現在の電源プランGUIDを保存
現在の電源プランGUIDを保存では、電源ボタンを押したときの動作の対象を「アクティブ電源プランGUID、SUB_BUTTONS、PBUTTONACTION、AC/DC区分、現在インデックスを組にする」という単位で扱います。Power Button Actionの設定値は0=何もしない、1=スリープ、2=休止状態、3=シャットダウンである。AC用とDC用は別のインデックスを持つ。対象が複数なら表示名の部分一致で先頭を採らず、一意になる条件を追加します。
電源ボタンを押したときの動作を始める前に、PowerShellの版、コマンドの提供元、必要権限、管理ポリシーの有無を確認します。権限不足と対象なしは意味が異なるため、例外を0件へ置き換えません。
PBUTTONACTIONの値を読み解く
PBUTTONACTIONの値を読み解くは変更前の基準点です。アクティブ電源プランGUID、SUB_BUTTONS、PBUTTONACTION、AC/DC区分、現在インデックスを組にするを出力に含め、取得時刻と一緒に保存します。値だけを切り取ると別対象との比較になるため、識別列を省きません。
powercfg.exe /getactivescheme
powercfg.exe /query SCHEME_CURRENT SUB_BUTTONS PBUTTONACTION
Power Button Actionの設定値は0=何もしない、1=スリープ、2=休止状態、3=シャットダウンである。AC用とDC用は別のインデックスを持つ。出力が多い場合も最初から無理に一件へ絞らず、候補数と除外理由を残してから対象を決めます。
変更値0から3の意味を確認
変更値0から3の意味を確認では、powercfgで現在のプランとインデックスを読み、求めるACまたはDC側だけを変更してプランを再適用する。電源ボタンを押したときの動作の例中にある名前、パス、ID、時刻はサンプルなので、そのまま本番へ貼らず、直前の読み取り結果から承認値を入れます。
powercfg.exe /setacvalueindex SCHEME_CURRENT SUB_BUTTONS PBUTTONACTION 0
powercfg.exe /setactive SCHEME_CURRENT
稼働中サーバーや暗号化処理中の端末で実機テストしない。0をシャットダウンだと誤解しない。電源ボタンを押したときの動作でプレビュー対応コマンドを使える場合はWhatIfを先に実行し、非対応の操作は対象一覧と引数を画面へ出して人が承認してから一度だけ実行します。
setacvalueindex後にプランを再適用
setacvalueindex後にプランを再適用では同じ対象を別経路でもう一度読みます。判定したいのは「コマンドが終了したか」ではなく、query結果が承認インデックスとなり、実機テストで一回押した動作が意図どおりで、長押しの強制電源断と混同しないかどうかです。
powercfg.exe /query SCHEME_CURRENT SUB_BUTTONS PBUTTONACTION
エイリアスが解決しない機種ではGUID表示と対応する設定サブグループを確認し、推測した数値を入れない。電源ボタンを押したときの動作の期待値と実測値が一致しないときは追加変更を重ねず、対象識別、権限、ポリシー、時間差の順で原因を分けます。
ポリシーやModern Standbyの影響
稼働中サーバーや暗号化処理中の端末で実機テストしない。0をシャットダウンだと誤解しない。ポリシーやModern Standbyの影響に該当したら、警告を消して継続するのではなく、どの条件で止まったかを記録します。
エイリアスが解決しない機種ではGUID表示と対応する設定サブグループを確認し、推測した数値を入れない。電源ボタンを押したときの動作ではエラー本文、FullyQualifiedErrorId、対象ID、直前に成功した段階を残すと、別担当者が安全な地点から調査できます。
以前のインデックスへ戻す
保存したAC/DCインデックスを同じプランへ設定し、setactive後にqueryと実機動作を確認する。復旧操作にも同じ識別条件を使い、名前が似た別対象へ戻し処理を適用しません。
- 電源ボタンを押したときの動作の変更前値と取得時刻
- 復旧対象: アクティブ電源プランGUID、SUB_BUTTONS、PBUTTONACTION、AC/DC区分、現在インデックスを組にする
- 復旧後の判定: query結果が承認インデックスとなり、実機テストで一回押した動作が意図どおりで、長押しの強制電源断と混同しない
- 再実行を止める条件: 稼働中サーバーや暗号化処理中の端末で実機テストしない。0をシャットダウンだと誤解しない
誤操作を避ける端末別チェック
ノートPCはACとバッテリーの両方、蓋閉じ動作とは別項目として試験表へ残す。電源ボタンを押したときの動作を繰り返す場合は、正常、対象なし、要承認、失敗を異なる終了状態として記録し、前回値との比較だけで異常を決めません。
| 誤操作を避ける端末別チェックの識別軸 | アクティブ電源プランGUID、SUB_BUTTONS、PBUTTONACTION、AC/DC区分、現在インデックスを組にする |
| 採用する実測 | query結果が承認インデックスとなり、実機テストで一回押した動作が意図どおりで、長押しの強制電源断と混同しない |
| 0件時の扱い | エイリアスが解決しない機種ではGUID表示と対応する設定サブグループを確認し、推測した数値を入れない |
| 保留にする兆候 | 稼働中サーバーや暗号化処理中の端末で実機テストしない。0をシャットダウンだと誤解しない |
電源ボタンを押したときの動作の実行記録には、開始前の対象候補、採用した識別値、実行したコード、終了後の実測、除外した候補と理由を同じ作業番号で残します。特に「アクティブ電源プランGUID、SUB_BUTTONS、PBUTTONACTION、AC/DC区分、現在インデックスを組にする」を省くと、後日の再確認で別対象の値を比較するおそれがあります。画面コピーだけでなく、日時と端末名を含む構造化した出力も保存します。
PowerShellを使用してシステムの電源ボタンの動作をカスタマイズする方法を定期手順へ組み込む場合も、初回は対話的に候補を確認します。正常時は「query結果が承認インデックスとなり、実機テストで一回押した動作が意図どおりで、長押しの強制電源断と混同しない」、判定不能時は「エイリアスが解決しない機種ではGUID表示と対応する設定サブグループを確認し、推測した数値を入れない」、中止時は「稼働中サーバーや暗号化処理中の端末で実機テストしない。0をシャットダウンだと誤解しない」をそれぞれ別の結果として扱います。これにより、0件や例外を都合よく成功へ丸めず、次の担当者が同じ対象と条件で追試できます。
公式情報・参考資料
電源ボタンを押したときの動作で使うコマンド名、引数、対応環境は次のMicrosoft一次資料で確認しました。記事の確認日は2026年7月17日です。OSやモジュール更新後は、実行端末のGet-Helpと併せて再確認してください。

コメント