PowerShellを使って現在のユーザー権限を確認する方法

PowerShellを使って現在のユーザー権限を確認する方法という問いには、whoami /allとWindowsPrincipalのIsInRoleを組み合わせ、アカウント属性ではなく現在のPowerShellプロセスのトークンを確認するという方法で答えます。UAC環境ではAdministrators所属アカウントでも、未昇格プロセスのトークンは管理者ロール判定がFalseになり得る。所属と現在使える権限を分けて読む。この記事ではWindowsIdentityのNameとUser SID、現在プロセスの整合性レベル、グループSIDを対応付けるを判断軸にし、実行前の確認、記事固有のコード、合否判定、戻し方を一続きで示します。

ユーザープロファイル情報ではなく、現在プロセスが使えるWindowsアクセストークンを調べる。完了は「ユーザーSID、昇格の有無、有効な主要グループと必要権限の充足を説明できる」と定義します。対象が取れない場合は「ロール判定Falseをアカウント異常と決めず、標準起動か昇格起動か、UAC設定、要求された権限を確認する」として切り分け、推測で成功扱いにしません。

目次

所属グループと昇格状態は別物

whoami /allとWindowsPrincipalのIsInRoleを組み合わせ、アカウント属性ではなく現在のPowerShellプロセスのトークンを確認する。現在ユーザーの権限レベル確認ではこの進め方により、操作したという事実ではなく、期待する状態へ到達したかでタイトルの問いへ答えられます。ユーザープロファイル情報ではなく、現在プロセスが使えるWindowsアクセストークンを調べる。

所属グループと昇格状態は別物の合格条件は、ユーザーSID、昇格の有無、有効な主要グループと必要権限の充足を説明できることです。作業時刻、実行ユーザー、端末名を添え、判断に使った値が後から追える形にします。

SIDとトークン情報を取得

SIDとトークン情報を取得では、現在ユーザーの権限レベル確認の対象を「WindowsIdentityのNameとUser SID、現在プロセスの整合性レベル、グループSIDを対応付ける」という単位で扱います。UAC環境ではAdministrators所属アカウントでも、未昇格プロセスのトークンは管理者ロール判定がFalseになり得る。所属と現在使える権限を分けて読む。対象が複数なら表示名の部分一致で先頭を採らず、一意になる条件を追加します。

現在ユーザーの権限レベル確認を始める前に、PowerShellの版、コマンドの提供元、必要権限、管理ポリシーの有無を確認します。権限不足と対象なしは意味が異なるため、例外を0件へ置き換えません。

WindowsPrincipalで管理者ロールを照会

WindowsPrincipalで管理者ロールを照会は変更前の基準点です。WindowsIdentityのNameとUser SID、現在プロセスの整合性レベル、グループSIDを対応付けるを出力に含め、取得時刻と一緒に保存します。値だけを切り取ると別対象との比較になるため、識別列を省きません。

whoami.exe /user
whoami.exe /groups
whoami.exe /priv

UAC環境ではAdministrators所属アカウントでも、未昇格プロセスのトークンは管理者ロール判定がFalseになり得る。所属と現在使える権限を分けて読む。出力が多い場合も最初から無理に一件へ絞らず、候補数と除外理由を残してから対象を決めます。

whoamiのEnabled属性を読む

whoamiのEnabled属性を読むでは、whoami /allとWindowsPrincipalのIsInRoleを組み合わせ、アカウント属性ではなく現在のPowerShellプロセスのトークンを確認する。現在ユーザーの権限レベル確認の例中にある名前、パス、ID、時刻はサンプルなので、そのまま本番へ貼らず、直前の読み取り結果から承認値を入れます。

$principal = [Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()
$principal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)

診断のためにユーザーをAdministratorsへ追加しない。whoami出力には組織のSID情報が含まれるため公開しない。現在ユーザーの権限レベル確認でプレビュー対応コマンドを使える場合はWhatIfを先に実行し、非対応の操作は対象一覧と引数を画面へ出して人が承認してから一度だけ実行します。

管理者グループ所属でもFalseになる場面

管理者グループ所属でもFalseになる場面では同じ対象を別経路でもう一度読みます。判定したいのは「コマンドが終了したか」ではなく、ユーザーSID、昇格の有無、有効な主要グループと必要権限の充足を説明できるかどうかです。

Get-Process -Id $PID | Select-Object Path, StartTime
whoami.exe /all

ロール判定Falseをアカウント異常と決めず、標準起動か昇格起動か、UAC設定、要求された権限を確認する。現在ユーザーの権限レベル確認の期待値と実測値が一致しないときは追加変更を重ねず、対象識別、権限、ポリシー、時間差の順で原因を分けます。

不足権限を勝手に付与しない

診断のためにユーザーをAdministratorsへ追加しない。whoami出力には組織のSID情報が含まれるため公開しない。不足権限を勝手に付与しないに該当したら、警告を消して継続するのではなく、どの条件で止まったかを記録します。

ロール判定Falseをアカウント異常と決めず、標準起動か昇格起動か、UAC設定、要求された権限を確認する。現在ユーザーの権限レベル確認ではエラー本文、FullyQualifiedErrorId、対象ID、直前に成功した段階を残すと、別担当者が安全な地点から調査できます。

監査用に必要最小限を保存

手順書には『管理者アカウント』ではなく『昇格済みトークンが必要』など実際の要件を書く。現在ユーザーの権限レベル確認を繰り返す場合は、正常、対象なし、要承認、失敗を異なる終了状態として記録し、前回値との比較だけで異常を決めません。

監査用に必要最小限を保存の識別軸WindowsIdentityのNameとUser SID、現在プロセスの整合性レベル、グループSIDを対応付ける
採用する実測ユーザーSID、昇格の有無、有効な主要グループと必要権限の充足を説明できる
0件時の扱いロール判定Falseをアカウント異常と決めず、標準起動か昇格起動か、UAC設定、要求された権限を確認する
保留にする兆候診断のためにユーザーをAdministratorsへ追加しない。whoami出力には組織のSID情報が含まれるため公開しない

現在ユーザーの権限レベル確認の実行記録には、開始前の対象候補、採用した識別値、実行したコード、終了後の実測、除外した候補と理由を同じ作業番号で残します。特に「WindowsIdentityのNameとUser SID、現在プロセスの整合性レベル、グループSIDを対応付ける」を省くと、後日の再確認で別対象の値を比較するおそれがあります。画面コピーだけでなく、日時と端末名を含む構造化した出力も保存します。

PowerShellを使って現在のユーザー権限を確認する方法を定期手順へ組み込む場合も、初回は対話的に候補を確認します。正常時は「ユーザーSID、昇格の有無、有効な主要グループと必要権限の充足を説明できる」、判定不能時は「ロール判定Falseをアカウント異常と決めず、標準起動か昇格起動か、UAC設定、要求された権限を確認する」、中止時は「診断のためにユーザーをAdministratorsへ追加しない。whoami出力には組織のSID情報が含まれるため公開しない」をそれぞれ別の結果として扱います。これにより、0件や例外を都合よく成功へ丸めず、次の担当者が同じ対象と条件で追試できます。

公式情報・参考資料

現在ユーザーの権限レベル確認で使うコマンド名、引数、対応環境は次のMicrosoft一次資料で確認しました。記事の確認日は2026年7月17日です。OSやモジュール更新後は、実行端末のGet-Helpと併せて再確認してください。

この記事を書いた人

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

コメント

コメントする

目次