PowerShellを用いてシステムの電源プランを管理する方法

power plan管理では、表示名ではなくscheme GUIDとAC/DC電源区分を最初の対象キーにします。変更や集計へ進む前にactive schemeとSUB_SLEEPの現在値を保存し、別対象を同じ結果へ混ぜないことが出発点です。

この手順の合格条件は「選択したtarget GUIDがactiveになり旧active GUIDへ戻せる状態」です。Microsoft Learn:powercfgのscheme GUID操作とWindows power setting定義が定義するpowercfgのscheme GUID操作とWindows power setting定義を根拠にし、画面へ値が出たことだけを成功とは判定しません。

停止条件:OEM utilityやorganization policyが同じschemeを管理する。該当するときは操作を進めず、保存したscheme GUIDをsetactiveして旧値を照合するを実行可能な形で確認してから再計画します。

目次

power plan管理|対象を一件へ固定する:scheme GUIDとAC/DC電源区分

電源プランの管理で使うPowerShellの版は $PSVersionTable で、コマンドの提供元は Get-Command powercfg.exe で確認します。管理者推奨。対象候補が複数ならデバイス名、スキームGUID、AC/DC区分、現在値を使い、表示名の部分一致だけで選びません(電源プランの管理の判断では「メーカー独自プランやModern Standbyでは表示項目が異なる」を優先し、powercfg.exeが空なら成功扱いしません)。

  • 電源プランの管理: 実行端末と現在ユーザーを記録する
  • powercfg.exe: Source、Version、利用可能なパラメーターを確認する
  • デバイス名、スキームGUID、AC/DC区分、現在値: 変更前の値を日時付きで保存する
  • アクティブGUID、AC/DC値、デバイスの現在値、BitLocker回復手段: 復旧に使えることを読み取り確認する(電源プランの管理では管理者推奨の範囲でpowercfg.exeが返す固有値を基準にします)。
  • 電源断や再起動に備えられず、重要処理や暗号化解除が未確認: 該当すれば本番実行を見送る

電源プランの管理の読み取り例を示します。最初は通常権限で試し、アクセス拒否が出た箇所だけ必要権限を確認します。

$guidPattern = '[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}'
$activeOutput = @(& powercfg.exe /getactivescheme 2>&1)
if ($LASTEXITCODE -ne 0) { throw "powercfg /getactivescheme failed: $($activeOutput -join ' ')" }
$match = [regex]::Match(($activeOutput -join ' '), $guidPattern)
if (-not $match.Success) { throw 'Could not parse the active power scheme GUID' }
$oldActiveGuid = $match.Value.ToLowerInvariant()
$targetGuid = '381b4222-f694-41f0-9685-ff5bb260df2e' # Balanced
& powercfg.exe /list
if ($LASTEXITCODE -ne 0) { throw 'powercfg /list failed' }
& powercfg.exe /query $targetGuid
if ($LASTEXITCODE -ne 0) { throw "Target scheme is unavailable: $targetGuid" }
[pscustomobject]@{ PreviousActiveGuid=$oldActiveGuid; TargetGuid=$targetGuid }

「PowerShellを用いてシステムの電源プランを管理する方法」の対象を電源プランの管理として検証するときは、powercfg.exeの結果は機器の対応可否、現在値、変更後値、復帰や温度を同じ条件で確認する順に読みます。件数、固有ID、状態、取得時刻を保存すると、後のpowercfg.exeと比較できます。

power plan管理|成功を一つの状態で定義する:選択したtarget GUIDがactiveになり旧active GUIDへ戻せる状態

電源プランの管理は読み取りで完結できます。powercfg.exeの対象件数とpowercfg.exeの結果が一致し、エラーを除外していないことが合格条件です。

「PowerShellを用いてシステムの電源プランを管理する方法」で電源プランの管理を判断する場面では、powercfg.exeの出力では、デバイス名、スキームGUID、AC/DC区分、現在値が同じ対象を指しているかを見ます。値が変わっていても別対象なら失敗であり、変更前のアクティブGUIDと設定値をpowercfg /queryで保存し、問題時は元のGUIDを/setactiveで再適用する。

判断要素電源プランの管理で記録する内容
対象の識別デバイス名、スキームGUID、AC/DC区分、現在値
最初の確認powercfg.exe
変更または操作powercfg.exe
再確認powercfg.exe
中止条件電源断や再起動に備えられず、重要処理や暗号化解除が未確認

power plan管理|似た結果を同一視しない:localized display nameだけでschemeを選ぶこと

電源プランはpowercfg /listで取得したactive scheme GUIDを固定し、/queryのAC値とDC値を別列に保存します。Modern Standbyやメーカー固有制御で項目が見えない場合は、存在しない設定を推測して書き換えません。

電源プランとはの確認結果は電源プランの管理の変更可否に直結します。電源断や再起動に備えられず、重要処理や暗号化解除が未確認なら、電源プランとはの調査記録を残して実行を見送ります。

電源プランの管理の「PowerShellで電源プランを変更する手順」では、powercfg.exeの取得時刻と対象件数を残します。後からpowercfg.exeを実行したとき、PowerShellで電源プランを変更する手順の差分理由を説明できる形にします。

「環境の準備」を検証する際は機器の対応可否、現在値、変更後値、復帰や温度を同じ条件で確認する順序を崩しません。電源プランの管理の別スコープや別ユーザーの値を混ぜないことが重要です。

「コード例」は電源プランの管理の対象範囲を決める論点です。powercfg.exeの前にコード例の現在状態を確認し、デバイス名、スキームGUID、AC/DC区分、現在値と対応付けます。

補足事項の確認結果は電源プランの管理の変更可否に直結します。電源断や再起動に備えられず、重要処理や暗号化解除が未確認なら、補足事項の調査記録を残して実行を見送ります。

電源プラン管理では、表示名ではなくpowercfg /listに出るスキームGUIDとアクティブ印を記録します。同じ「バランス」という表示でもメーカーが値を変更している場合があるため、/queryの詳細をバックアップします。

電源スキーム内の設定はAC電源とバッテリーで別です。スリープ、ディスプレイ消灯、CPU、無線アダプターの値を一括で同じにせず、利用場所とバッテリー持続時間に合わせて比較します。

Windows 11の電源モードと従来の電源プランは表示階層が異なる場合があります。設定アプリで見えるモード、powercfgのアクティブGUID、メーカー管理アプリの三者が競合していないかを確認します。

電源プラン変更の評価では、アイドル時だけでなく会議、動画、コンパイル、スリープ復帰を同じ条件で試します。発熱やファン音だけでなく、イベントログとバッテリーレポートも記録します。

元へ戻す際は変更前のGUIDを/setactiveへ指定し、その後に/queryで各値を再取得します。表示名が同じことだけで復旧完了とせず、AC/DCの値とスリープ復帰を確認します。

power plan管理|失敗後に使う証拠を確保する:保存したscheme GUIDをsetactiveして旧値を照合する

電源プランの管理は読み取り中心ですが、出力には端末名、SID、IP、メールアドレスなどが含まれる場合があります。保存先のACLと保管期限を決め、共有時は必要列だけに限定します。

電源プランの管理の追加確認例です。システムを変更する命令ではなく、powercfg.exeの結果を別の列や範囲で確かめる目的で使います。

function Get-ActivePowerPlanGuid {
  $output = @(& powercfg.exe /getactivescheme 2>&1)
  if ($LASTEXITCODE -ne 0) { throw "powercfg /getactivescheme failed: $($output -join ' ')" }
  $parsed = [regex]::Match(($output -join ' '), $guidPattern)
  if (-not $parsed.Success) { throw 'Could not parse active power scheme GUID' }
  $parsed.Value.ToLowerInvariant()
}
function Restore-PreviousPowerPlan {
  & powercfg.exe /setactive $oldActiveGuid
  if ($LASTEXITCODE -ne 0) { throw "Failed to restore power scheme $oldActiveGuid" }
  if ((Get-ActivePowerPlanGuid) -ne $oldActiveGuid) { throw 'Power-plan rollback verification failed' }
}
[pscustomobject]@{ Action='Set active power scheme'; TargetGuid=$targetGuid; PreviousGuid=$oldActiveGuid }
if ((Read-Host "Type ACTIVATE to switch to $targetGuid") -cne 'ACTIVATE') { throw 'Cancelled' }
try {
  & powercfg.exe /setactive $targetGuid
  if ($LASTEXITCODE -ne 0) { throw "powercfg /setactive failed for $targetGuid" }
  if ((Get-ActivePowerPlanGuid) -ne $targetGuid) { throw 'Target power-plan verification failed' }
} catch {
  $originalError = $_
  try { Restore-PreviousPowerPlan } catch { throw "$($originalError.Exception.Message); $($_.Exception.Message)" }
  throw $originalError
}

メーカー独自プランやModern Standbyでは表示項目が異なる。AC/DC、性能、発熱、バッテリーを同じ条件で評価する。 そのため、powercfg.exeの結果が期待どおりでも環境固有の制約を再確認します。

power plan管理|別の読取経路で照合する:選択したtarget GUIDがactiveになり旧active GUIDへ戻せる状態

「PowerShellを用いてシステムの電源プランを管理する方法」の復旧可否を決める際は、powercfg.exeでは、変更前に保存したデバイス名、スキームGUID、AC/DC区分、現在値と同じ対象を選びます。機器の対応可否、現在値、変更後値、復帰や温度を同じ条件で確認することで、別スコープの値を成功結果として採用しません(電源プランの管理では管理者推奨の範囲でpowercfg.exeが返す固有値を基準にします)。

$currentGuid = Get-ActivePowerPlanGuid
if ($currentGuid -ne $targetGuid) { throw "Expected active GUID $targetGuid; found $currentGuid" }
& powercfg.exe /query $currentGuid SUB_SLEEP
if ($LASTEXITCODE -ne 0) { throw 'powercfg SUB_SLEEP query failed' }
[pscustomobject]@{ ActiveGuid=$currentGuid; PreviousGuid=$oldActiveGuid; RollbackFunction='Restore-PreviousPowerPlan' }
Write-Host 'If validation later fails, run Restore-PreviousPowerPlan in this same session.'
  • powercfg.exe: 同じ対象IDを再取得できた
  • 電源プランの管理: 意図した値または件数だけが変化した
  • 機器の対応可否、現在値、変更後値、復帰や温度を同じ条件で確認する: 関連機能も異常がない
  • 外付け機器、メーカー固有制御、Modern Standby、WMI非公開: 取得失敗をゼロ件として扱っていない(電源プランの管理の判断では「メーカー独自プランやModern Standbyでは表示項目が異なる」を優先し、powercfg.exeが空なら成功扱いしません)。
  • メーカー独自プランやModern Standbyでは表示項目が異なる。AC/DC、性能、発熱、バッテリーを同じ条件で評価する。: 環境固有の制約に反していない

power plan管理|追加操作を止める兆候を読む:OEM utilityやorganization policyが同じschemeを管理する

powercfg.exeが「見つからない」ときは、Get-CommandとGet-Module -ListAvailableで提供元を確認します。電源プランの管理が非対応のEditionなら、名前が似たコマンドへ置き換えません。

電源プランの管理が時間経過後に元へ戻る場合は、GPO/MDM、同期、サービス再起動、別スコープを調べます。繰り返し上書きして管理設定と競合させません。

電源プランの管理で予想外の警告が一件でも出たら、対象数と時刻を記録して停止します。別の設定変更で警告を相殺しようとしません。

断定できません。電源プランの管理では外付け機器、メーカー固有制御、Modern Standby、WMI非公開でも空になります。エラーを表示し、権限とスコープを確認してからpowercfg.exeまたは別の公式な取得方法で照合します(電源プランの管理では管理者推奨の範囲でpowercfg.exeが返す固有値を基準にします)。

power plan管理|作成物だけを切り離して戻す:保存したscheme GUIDをsetactiveして旧値を照合する

変更前のアクティブGUIDと設定値をpowercfg /queryで保存し、問題時は元のGUIDを/setactiveで再適用する。

電源プランの管理を戻した後はpowercfg.exeとpowercfg.exeを再実行し、デバイス名、スキームGUID、AC/DC区分、現在値が変更前記録と一致することを確認します。復旧処理にも失敗したら連続操作を止め、保存したアクティブGUID、AC/DC値、デバイスの現在値、BitLocker回復手段とログを担当者へ渡します(電源プランの管理では管理者推奨の範囲でpowercfg.exeが返す固有値を基準にします)。

power plan管理|次回比較に使う値を固定する:active schemeとSUB_SLEEPの現在値

  • powercfg.exeの実行時刻、対象件数、エラー件数を残した
  • デバイス名、スキームGUID、AC/DC区分、現在値で対象を一意に特定した
  • アクティブGUID、AC/DC値、デバイスの現在値、BitLocker回復手段を変更前に保存して読めることを確認した(電源プランの管理の判断では「メーカー独自プランやModern Standbyでは表示項目が異なる」を優先し、powercfg.exeが空なら成功扱いしません)。
  • powercfg.exeの対象を一端末・一ユーザー・一設定に限定した
  • powercfg.exeと実利用テストの両方を確認した
  • 電源断や再起動に備えられず、重要処理や暗号化解除が未確認場合は実行を中止した

power plan管理|適用scopeの疑問へ答える:BalancedとOEM planのどちらを採用するか

権限だけが原因とは限りません。メーカー独自プランやModern Standbyでは表示項目が異なる。AC/DC、性能、発熱、バッテリーを同じ条件で評価する。 電源断や再起動に備えられず、重要処理や暗号化解除が未確認なら昇格して続行せず、対応Edition、対象ID、ポリシー、復旧経路を確認します(電源プランの管理の判断では「メーカー独自プランやModern Standbyでは表示項目が異なる」を優先し、powercfg.exeが空なら成功扱いしません)。

公式情報・参考資料

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次