local Administrators membershipでは、表示名ではなくbuilt-in SID S-1-5-32-544とmember SIDを最初の対象キーにします。変更や集計へ進む前にName・ObjectClass・PrincipalSource・SIDを保存し、別対象を同じ結果へ混ぜないことが出発点です。
この手順の合格条件は「direct memberをsource別に一覧化した状態」です。Microsoft Learn:Get-LocalGroupでbuilt-in SIDを解決しGet-LocalGroupMemberでdirect membershipを取得が定義するGet-LocalGroupでbuilt-in SIDを解決しGet-LocalGroupMemberでdirect membershipを取得を根拠にし、画面へ値が出たことだけを成功とは判定しません。
停止条件:domain lookup不能でSIDを解決できない。該当するときは操作を進めず、読み取りだけなのでSID表記のまま証跡を残すを実行可能な形で確認してから再計画します。
local Administrators membership|比較に使うbaselineを採る:Name・ObjectClass・PrincipalSource・SID
ローカル管理者一覧の読み取り例を示します。最初は通常権限で試し、アクセス拒否が出た箇所だけ必要権限を確認します。
$admins = Get-LocalGroup -SID 'S-1-5-32-544'
Get-LocalGroupMember -Group $admins.Name | Select-Object Name, ObjectClass, PrincipalSource, SID
Get-LocalGroupの結果は現在プロセス、ユーザースコープ、システムスコープを分けて再取得する順に読みます。件数、固有ID、状態、取得時刻を保存すると、後のGet-LocalGroupMemberと比較できます。
local Administrators membership|読むだけか変更かを決める:direct memberをsource別に一覧化した状態
ローカル管理者一覧は読み取りで完結できます。Get-LocalGroupの対象件数とGet-LocalGroupMemberの結果が一致し、エラーを除外していないことが合格条件です。
ローカル管理者一覧の判断基準は現在プロセス、ユーザースコープ、システムスコープを分けて再取得することです。Get-LocalGroupMemberがエラーを返す、対象が増減する、関連機能が使えない場合は合格にしません。
| 判断要素 | ローカル管理者一覧で記録する内容 |
| 対象の識別 | SID、ユーザー/コンピューター名、スコープ、言語またはドメイン |
| 最初の確認 | Get-LocalGroup |
| 変更または操作 | Get-LocalGroupMember |
| 再確認 | Get-LocalGroupMember |
| 中止条件 | 再起動後のログオンや認証を保証できず、代替管理者がない |
local Administrators membership|操作対象の境界を引く:built-in SID S-1-5-32-544とmember SID
ローカル管理者一覧で使うPowerShellの版は $PSVersionTable で、コマンドの提供元は Get-Command Get-LocalGroup で確認します。通常ユーザーで一覧、変更は管理者。対象候補が複数ならSID、ユーザー/コンピューター名、スコープ、言語またはドメインを使い、表示名の部分一致だけで選びません(ローカル管理者一覧の判断では「Administratorsの表示名はOS言語で変わるためSIDでグループを特定する」を優先し、Get-LocalGroupMemberが空なら成功扱いしません)。
- ローカル管理者一覧: 実行端末と現在ユーザーを記録する
- Get-LocalGroup: Source、Version、利用可能なパラメーターを確認する
- SID、ユーザー/コンピューター名、スコープ、言語またはドメイン: 変更前の値を日時付きで保存する
- 元の名前、SID、言語リスト、ドメイン状態、復旧用管理者: 復旧に使えることを読み取り確認する
- 再起動後のログオンや認証を保証できず、代替管理者がない: 該当すれば本番実行を見送る
local Administrators membership|見かけ上の成功を除外する:nested domain groupを展開済みeffective userとみなすこと
ローカル管理者一覧の「なぜ管理者権限を持つユーザーの一覧が必要か」では、Get-LocalGroupの取得時刻と対象件数を残します。後からGet-LocalGroupMemberを実行したとき、なぜ管理者権限を持つユーザーの一覧が必要かの差分理由を説明できる形にします。
ローカルAdministratorsはwell-known SID S-1-5-32-544でgroupを特定し、各memberのSID、Name、ObjectClass、PrincipalSourceを保存します。ドメインgroupの入れ子を展開した一覧と、端末上の直接memberを同じ件数へ混ぜません。
「PowerShellの基本的なコマンド」はローカル管理者一覧の対象範囲を決める論点です。Get-LocalGroupの前にPowerShellの基本的なコマンドの現在状態を確認し、SID、ユーザー/コンピューター名、スコープ、言語またはドメインと対応付けます。
ローカル管理者一覧で「コード例とその説明」を扱うときは、コード例とその説明の表示名だけでなくSID、ユーザー/コンピューター名、スコープ、言語またはドメインを記録します。Get-LocalGroupMemberでも同じ対象が返ることを確かめます。
「コードの実行手順」の値が想定と違う場合、UACトークン、ローカル/ドメインの混同、言語スコープ、権限不足を切り分けます。Administratorsの表示名はOS言語で変わるためSIDでグループを特定する。Entra/ADグループの入れ子は別途確認する。 ため、コードの実行手順を強制的に書き換えて症状を隠しません。
出力解説の確認結果はローカル管理者一覧の変更可否に直結します。再起動後のログオンや認証を保証できず、代替管理者がないなら、出力解説の調査記録を残して実行を見送ります。
Get-LocalGroupはローカル管理者一覧の1番目の確認手段です。Get-Help Get-LocalGroup -Fullで利用できるパラメーターを調べ、出力型と対象件数を記録します。
ローカル管理者一覧でGet-LocalGroupMemberを使う前に、Get-Command Get-LocalGroupMemberでSourceとVersionを確認します。別モジュールの同名コマンドを実行しないためです。
Select-Objectの空結果は成功とは限りません。ローカル管理者一覧ではUACトークン、ローカル/ドメインの混同、言語スコープ、権限不足を調べ、エラーを非表示にした場合も件数へ含めます。
ローカル管理者一覧の検証ではSort-Objectが返すオブジェクトを文字列だけに変換せず、固有IDと状態列を残します。後段の比較に使えるためです。
local Administrators membership|復旧に必要な値を退避する:読み取りだけなのでSID表記のまま証跡を残す
ローカル管理者一覧は読み取り中心ですが、出力には端末名、SID、IP、メールアドレスなどが含まれる場合があります。保存先のACLと保管期限を決め、共有時は必要列だけに限定します。
ローカル管理者一覧の追加確認例です。システムを変更する命令ではなく、Get-LocalGroupの結果を別の列や範囲で確かめる目的で使います。
Get-LocalGroupMember -Group (Get-LocalGroup -SID 'S-1-5-32-544').Name | Sort-Object PrincipalSource, Name
Administratorsの表示名はOS言語で変わるためSIDでグループを特定する。Entra/ADグループの入れ子は別途確認する。 そのため、Get-LocalGroupMemberの結果が期待どおりでも環境固有の制約を再確認します。
local Administrators membership|件数と識別値で合否を決める:direct memberをsource別に一覧化した状態
Get-LocalGroupMemberでは、変更前に保存したSID、ユーザー/コンピューター名、スコープ、言語またはドメインと同じ対象を選びます。現在プロセス、ユーザースコープ、システムスコープを分けて再取得することで、別スコープの値を成功結果として採用しません(ローカル管理者一覧の判断では「Administratorsの表示名はOS言語で変わるためSIDでグループを特定する」を優先し、Get-LocalGroupMemberが空なら成功扱いしません)。
Get-LocalGroupMember -Group (Get-LocalGroup -SID 'S-1-5-32-544').Name | ForEach-Object { $_ | Select-Object Name, SID, PrincipalSource }
- Get-LocalGroupMember: 同じ対象IDを再取得できた
- ローカル管理者一覧: 意図した値または件数だけが変化した
- 現在プロセス、ユーザースコープ、システムスコープを分けて再取得する: 関連機能も異常がない
- UACトークン、ローカル/ドメインの混同、言語スコープ、権限不足: 取得失敗をゼロ件として扱っていない(ローカル管理者一覧では通常ユーザーで一覧、変更は管理者の範囲でGet-LocalGroupが返す固有値を基準にします)。
- Administratorsの表示名はOS言語で変わるためSIDでグループを特定する。Entra/ADグループの入れ子は別途確認する。: 環境固有の制約に反していない
local Administrators membership|不明な状態を成功へ丸めない:domain lookup不能でSIDを解決できない
Get-LocalGroupが「見つからない」ときは、Get-CommandとGet-Module -ListAvailableで提供元を確認します。ローカル管理者一覧が非対応のEditionなら、名前が似たコマンドへ置き換えません。
ローカル管理者一覧が時間経過後に元へ戻る場合は、GPO/MDM、同期、サービス再起動、別スコープを調べます。繰り返し上書きして管理設定と競合させません。
ローカル管理者一覧で予想外の警告が一件でも出たら、対象数と時刻を記録して停止します。別の設定変更で警告を相殺しようとしません。
local Administrators membership|秘密値を除いて運用へ渡す:Name・ObjectClass・PrincipalSource・SID
- Get-LocalGroupの実行時刻、対象件数、エラー件数を残した
- SID、ユーザー/コンピューター名、スコープ、言語またはドメインで対象を一意に特定した
- 元の名前、SID、言語リスト、ドメイン状態、復旧用管理者を変更前に保存して読めることを確認した
- Get-LocalGroupMemberの対象を一端末・一ユーザー・一設定に限定した
- Get-LocalGroupMemberと実利用テストの両方を確認した
- 再起動後のログオンや認証を保証できず、代替管理者がない場合は実行を中止した
断定できません。ローカル管理者一覧ではUACトークン、ローカル/ドメインの混同、言語スコープ、権限不足でも空になります。エラーを表示し、権限とスコープを確認してからGet-LocalGroupMemberまたは別の公式な取得方法で照合します。
local Administrators membership|変更前状態へ戻す順番を決める:読み取りだけなのでSID表記のまま証跡を残す
読み取りのみなら復旧不要。メンバー削除は緊急用管理者、サービス、ドメイングループ入れ子を確認し、代替管理経路を確保して別承認にする。
ローカル管理者一覧を戻した後はGet-LocalGroupとGet-LocalGroupMemberを再実行し、SID、ユーザー/コンピューター名、スコープ、言語またはドメインが変更前記録と一致することを確認します。復旧処理にも失敗したら連続操作を止め、保存した元の名前、SID、言語リスト、ドメイン状態、復旧用管理者とログを担当者へ渡します(ローカル管理者一覧の判断では「Administratorsの表示名はOS言語で変わるためSIDでグループを特定する」を優先し、Get-LocalGroupMemberが空なら成功扱いしません)。
local Administrators membership|運用で生じる疑問を切り分ける:UAC tokenとgroup membershipの違い
権限だけが原因とは限りません。Administratorsの表示名はOS言語で変わるためSIDでグループを特定する。Entra/ADグループの入れ子は別途確認する。 再起動後のログオンや認証を保証できず、代替管理者がないなら昇格して続行せず、対応Edition、対象ID、ポリシー、復旧経路を確認します(ローカル管理者一覧では通常ユーザーで一覧、変更は管理者の範囲でGet-LocalGroupが返す固有値を基準にします)。

コメント