PowerShellで特定のフォルダのアクセス権限を持つユーザーやグループを一覧表示する方法

PowerShellで特定のフォルダのアクセス権限を持つユーザーやグループを一覧表示する方法では、実在folderのACLを読み、各ACEをidentity、rights、Allow/Deny、継承情報付きで一覧化する。Get-Acl.Accessは明示・継承ACEの一覧で、group membership、deny優先、token、share permissionを含むeffective accessの最終判定そのものではない。この記事はfolder full path、owner、AreAccessRulesProtected、IdentityReference、rights、type、inheritanceをACL recordにするを判断軸にして、記事固有のコード、合否、停止条件、復元を順序立てて説明します。

permission変更ではなく、特定folderに設定されたACL entryの棚卸しを扱う。完了は「対象folderのownerと全ACEが表示され、明示・継承、Allow・Deny、user・groupを区別できる」です。結果が空なら「Accessが空やSID未解決なら権限、provider、orphaned SIDを確認し、全員アクセスなしと断定しない」として調べ、エラーを0件へ置き換えません。

目次

対象folderをLiteralPathで固定

対象folderをLiteralPathで固定では「folder full path、owner、AreAccessRulesProtected、IdentityReference、rights、type、inheritanceをACL recordにする」という粒度で対象を特定します。Get-Acl.Accessは明示・継承ACEの一覧で、group membership、deny優先、token、share permissionを含むeffective accessの最終判定そのものではない。表示名や先頭候補だけを採用しません。

フォルダACLのユーザー・group一覧の対象が複数なら、候補数と除外理由を残します。フォルダACLのユーザー・group一覧では実行ユーザー、OS・製品版、locale、カレントディレクトリも結果の解釈へ影響するため同時に記録します。

ownerと継承保護を読む

ownerと継承保護を読むは変更や出力生成より先に行う観測です。folder full path、owner、AreAccessRulesProtected、IdentityReference、rights、type、inheritanceをACL recordにするを含む形で現状を保存し、後段のコードが同じ対象へ向くか確認します。

$path = 'C:\Ops\Shared'
if (-not (Test-Path -LiteralPath $path -PathType Container)) { throw "Folder not found: $path" }
$item = Get-Item -LiteralPath $path -Force
$acl = Get-Acl -LiteralPath $item.FullName
[pscustomobject]@{Path=$item.FullName; Owner=$acl.Owner; Group=$acl.Group; InheritanceProtected=$acl.AreAccessRulesProtected; RuleCount=$acl.Access.Count}

Get-Acl.Accessは明示・継承ACEの一覧で、group membership、deny優先、token、share permissionを含むeffective accessの最終判定そのものではない。フォルダACLのユーザー・group一覧では取得不能、対象なし、値が空という三状態を分け、stderrや終了コードを捨てません。

Access ruleを一行ずつ展開

実在folderのACLを読み、各ACEをidentity、rights、Allow/Deny、継承情報付きで一覧化する。フォルダACLのユーザー・group一覧では、単にコマンドが終了したことではなく「対象folderのownerと全ACEが表示され、明示・継承、Allow・Deny、user・groupを区別できる」を完了条件にします。permission変更ではなく、特定folderに設定されたACL entryの棚卸しを扱う。

Access ruleを一行ずつ展開に入る前に、対象、実行場所、権限、入力の由来を確認します。Accessが空やSID未解決なら権限、provider、orphaned SIDを確認し、全員アクセスなしと断定しない。判定不能を成功へ丸めません。

Allow・Denyと継承flagを表示

Allow・Denyと継承flagを表示では実在folderのACLを読み、各ACEをidentity、rights、Allow/Deny、継承情報付きで一覧化する。フォルダACLのユーザー・group一覧のサンプルにあるパス、セル、ユーザー、時刻は検証用なので、直前に確認した承認値へ置き換えます。

$path = 'C:\Ops\Shared'
$acl = Get-Acl -LiteralPath $path
$rules = $acl.Access | ForEach-Object {
    [pscustomobject]@{
        Identity = $_.IdentityReference.Value
        Rights = $_.FileSystemRights.ToString()
        Type = $_.AccessControlType.ToString()
        Inherited = $_.IsInherited
        InheritanceFlags = $_.InheritanceFlags.ToString()
        PropagationFlags = $_.PropagationFlags.ToString()
    }
}
$rules | Sort-Object Identity,Type,Rights | Format-Table -AutoSize

一覧確認の段階でSet-Aclを実行しない。ACL outputには組織SID・group名が含まれるため公開しない。フォルダACLのユーザー・group一覧で変更が発生する場合は、新規出力、no-clobber、WhatIf、下書き表示など利用可能な安全機構を先に使います。

IdentityReferenceをgroup化

IdentityReferenceをgroup化では入力と出力を別々に再取得します。フォルダACLのユーザー・group一覧の合格は、対象folderのownerと全ACEが表示され、明示・継承、Allow・Deny、user・groupを区別できることです。件数だけでなく識別値と内容も照合します。

$path = 'C:\Ops\Shared'
$acl = Get-Acl -LiteralPath $path
$acl.Access | Group-Object { "$($_.IdentityReference.Value)|$($_.AccessControlType)|Inherited=$($_.IsInherited)" } |
    Sort-Object Name | Select-Object Count,Name
Write-Host 'This is configured ACL data, not an effective-access calculation.'

Accessが空やSID未解決なら権限、provider、orphaned SIDを確認し、全員アクセスなしと断定しない。フォルダACLのユーザー・group一覧の結果が期待と違えば追加変更を重ねず、入力、対象範囲、locale・時刻、権限、製品仕様の順に戻って調べます。

effective accessとは違う

一覧確認の段階でSet-Aclを実行しない。ACL outputには組織SID・group名が含まれるため公開しない。effective accessとは違うに当てはまるときは中止理由、対象識別子、終了コードまたはErr.Number、直前に成功した段階を保存します。

Accessが空やSID未解決なら権限、provider、orphaned SIDを確認し、全員アクセスなしと断定しない。フォルダACLのユーザー・group一覧の再試行は原因を直し、同じ入力と対象を再確認してから行います。警告抑止や強制上書きで通しません。

解決不能SIDと権限拒否

effective accessが必要なら対象principalのgroup tokenとshare permissionを別評価する。フォルダACLのユーザー・group一覧を反復するときは、正常、差分なし、対象なし、要承認、失敗を別の状態として記録します。

解決不能SIDと権限拒否の主キーfolder full path、owner、AreAccessRulesProtected、IdentityReference、rights、type、inheritanceをACL recordにする
採用条件対象folderのownerと全ACEが表示され、明示・継承、Allow・Deny、user・groupを区別できる
空結果Accessが空やSID未解決なら権限、provider、orphaned SIDを確認し、全員アクセスなしと断定しない
中止条件一覧確認の段階でSet-Aclを実行しない。ACL outputには組織SID・group名が含まれるため公開しない

対象folderをLiteralPathで固定から証跡化するAccess ruleを一行ずつ展開

フォルダACLのユーザー・group一覧の証跡は「folder full path、owner、AreAccessRulesProtected、IdentityReference、rights、type、inheritanceをACL recordにする」を主キーにします。対象folderをLiteralPathで固定で確認した値と、実行直前・実行直後の値を同じ作業番号に保存し、表示名が似ている別対象や前回の結果を混ぜません。

ownerと継承保護を読むで空結果を判定するAllow・Denyと継承flagを表示

フォルダACLのユーザー・group一覧の空結果は「Accessが空やSID未解決なら権限、provider、orphaned SIDを確認し、全員アクセスなしと断定しない」として扱います。ownerと継承保護を読むで入力自体が存在するか、権限で見えていないか、条件に一致しないだけかを分け、0件という表示だけで成功・失敗を決めません。

解決不能SIDと権限拒否から復旧可否を測る対象folderをLiteralPathで固定

フォルダACLのユーザー・group一覧の復旧判断では「読み取りのみ。変更時はSDDLを保存し、対象folderだけの承認済みrestoreを用意する」を採用します。解決不能SIDと権限拒否を再確認し、復旧後に「対象folderのownerと全ACEが表示され、明示・継承、Allow・Deny、user・groupを区別できる」へ戻ったかを別の読み取り処理で測定します。

フォルダACLのユーザー・group一覧の事前確認では、folder full path、owner、AreAccessRulesProtected、IdentityReference、rights、type、inheritanceをACL recordにするを画面表示や標準出力だけで済ませず、実行日時と一緒に作業記録へ写します。Get-Acl.Accessは明示・継承ACEの一覧で、group membership、deny優先、token、share permissionを含むeffective accessの最終判定そのものではないという仕様があるため、似た名前の別対象、前回実行時の値、キャッシュされた表示を今回の対象と取り違えないことが重要です。

フォルダACLのユーザー・group一覧のコードを実行した直後は、まず終了状態を保存し、その後に別の読み取り処理で「対象folderのownerと全ACEが表示され、明示・継承、Allow・Deny、user・groupを区別できる」を確認します。フォルダACLのユーザー・group一覧では同じコードの表示だけを合否判定に使うと部分成功や遅延反映を見逃すため、識別値、件数、内容の三点を照合します。

フォルダACLのユーザー・group一覧で結果が得られない場合は、Accessが空やSID未解決なら権限、provider、orphaned SIDを確認し、全員アクセスなしと断定しない。フォルダACLのユーザー・group一覧ではこの状態と、権限拒否、入力形式の不一致、接続先や時刻の違いを一緒にしません。フォルダACLのユーザー・group一覧の対象候補数、除外された候補、最後に成功した確認処理を残すと、再試行で同じ失敗を重ねずに済みます。

フォルダACLのユーザー・group一覧を元へ戻す必要があるときは、読み取りのみ。変更時はSDDLを保存し、対象folderだけの承認済みrestoreを用意する。フォルダACLのユーザー・group一覧の復元前にも変更後の識別値を再取得し、別担当者の更新が入っていないか確認します。フォルダACLのユーザー・group一覧の復元結果も通常処理と同じ完了条件で測り、戻したつもりという報告だけで閉じません。

フォルダACLのユーザー・group一覧を引き継ぐ記録には、effective accessが必要なら対象principalのgroup tokenとshare permissionを別評価する。特に「一覧確認の段階でSet-Aclを実行しない。ACL outputには組織SID・group名が含まれるため公開しない」に該当した場合は、実行を止めたこと自体を正しい結果として扱います。フォルダACLのユーザー・group一覧の次回担当者が承認範囲と未処理対象を区別できるよう、作業番号と対象識別子を対応付けます。

フォルダACLのユーザー・group一覧の作業記録には、開始前の対象候補、採用した識別値、実行したコード、終了後の実測、除外理由を同じ作業番号で保存します。「folder full path、owner、AreAccessRulesProtected、IdentityReference、rights、type、inheritanceをACL recordにする」を省くと別対象との比較になり得るため、日時、実行場所、製品版と一緒に残します。

PowerShellで特定のフォルダのアクセス権限を持つユーザーやグループを一覧表示する方法を定期運用へ組み込む場合も初回は対話的に確認します。正常は「対象folderのownerと全ACEが表示され、明示・継承、Allow・Deny、user・groupを区別できる」、空結果は「Accessが空やSID未解決なら権限、provider、orphaned SIDを確認し、全員アクセスなしと断定しない」、停止は「一覧確認の段階でSet-Aclを実行しない。ACL outputには組織SID・group名が含まれるため公開しない」として報告し、次の担当者が同じ条件で追試できるようにします。

公式情報・参考資料

フォルダACLのユーザー・group一覧のコマンド、API、対応範囲は次の公式一次資料で確認しました。確認日は2026年7月17日です。フォルダACLのユーザー・group一覧の実行環境にあるman、–help、VBA Object Browser、Get-Helpも併用してください。

この記事を書いた人

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

コメント

コメントする

目次