HOWTO · PowerShell

特定のユーザーのための Get-Acl を PowerShell で取得する方法

このチュートリアルでは、PowerShell で特定のユーザーの権限を確認するために get-acl を使用する方法を示します。

このページの内容

PowerShell は強力な自動化ツールであり、Windows 環境のさまざまな側面を管理するための多数のコマンドレットを提供しています。

基本的なコマンドレットの 1つは Get-Acl で、アクセス制御リストを意味します。これにより、管理者はファイル、フォルダー、またはレジストリキーのセキュリティ記述子(権限)を取得して検査することができます。

この記事では、特定のユーザーのために Get-Acl を使用する複雑さについて掘り下げます。構文、オプション、実用的な例をカバーして、Windows 環境でのアクセス権の効果的な管理を支援します。

PowerShell における Get-Acl の紹介

Get-Acl は、ファイル、ディレクトリ、またはレジストリキーのアクセス制御リスト(ACL)を取得するために使用される PowerShell コマンドレットです。ACL には、オブジェクトに誰がアクセスでき、どのレベルのアクセスを持っているかを定義するアクセス制御エントリ(ACE)のリストが含まれています。

権限を理解し、管理することは、安全で整然としたコンピューティング環境を維持するために重要です。Get-Acl は、プログラム的に権限を検査および修正する手段を提供することによって、管理者を強化します。

基本構文:

Get-Acl [-Path] <String[]> [-Audit] [-AllCentralAccessPolicies] [-Directory] [-Filter <String>] [-Include <String[]>] [-LiteralPath <String[]>] [-Owner] [-Access <String>] [-UseTransaction] [<CommonParameters>]

一般的なパラメーター:

-Path ACL を取得するアイテムのパスを指定します。
-Audit 監査ルールを取得します。
-Owner 所有者情報を取得します。
-Access 特定のタイプのアクセスルールのみを取得します。
-UseTransaction コマンドレットのトランザクションの使用を許可します。
-InputObject 特定のオブジェクトのセキュリティ記述子を提供します。
-LiteralPath リソースまたはファイルのパスを指定するために使用されます。このパラメーターの値は、そのまま使用する必要があります。

高度なオプション:

-AllCentralAccessPolicies すべての中央アクセスポリシーを取得します。
-Directory アイテムがディレクトリであることを指定します。
-Filter 指定された基準に基づいて結果をフィルタリングします。
-Include 指定されたアイテムのみを取得します。
-Exclude 特定のアイテムを省略します。ここでパスを提供する必要があります。

特定のユーザーの ACL を取得する

Path パラメーターを使用する

特定のユーザーに対して ACL を取得する最も簡単な方法は、アイテム(ファイル、ディレクトリ、またはレジストリキー)へのパスとともに Path パラメーターを使用することです。

Get-Acl -Path 'C:\Example\File.txt'

Where-Object でユーザーを指定する

特定のユーザーに対する結果をフィルタリングするには、Where-Object コマンドレットを Get-Acl と組み合わせて使用できます。これにより、目的のユーザーに関連する ACE のみを選択できます。

Get-Acl -Path 'C:\Example\File.txt' | Where-Object { $_.Access | Where-Object { $_.IdentityReference -eq 'DOMAIN\User' } }

コードは、ユーザーのアイデンティティが'DOMAIN\User'であるファイル C:\Example\File.txt の ACL 内で特定のアクセスルールを探しています。一致するルールがあれば、出力に表示されます。そうでない場合、出力は空になります。

Get-Acl の出力を解釈する

アクセスルール

Get-Acl の出力には、アクセスルールに関する情報が含まれます。各ルールは、ユーザーまたはグループ、アクセスの種類(例:読み取り、書き込み)、およびそのアクセスを許可または拒否するかどうかを指定します。

監査ルール

-Audit パラメーターが使用されると、監査ルールも含まれます。これらのルールは、特定のユーザーまたはグループに対してどの種類のアクセスを監査する必要があるかを指定します。

所有者とグループ

Get-Acl は、アイテムの所有者に関する情報と、それに関連するグループを取得することもできます。

実用的な例

例 1:ファイルの ACL を取得する

以下のコマンドは、C:\Example\File.txt にあるファイルのアクセス制御リスト(ACL)を取得します。このコマンドは、その特定のファイルに関連する権限とアクセスルールに関する情報を返します。

Get-Acl -Path 'C:\Example\File.txt'

例 2:ディレクトリの ACL を取得する

以下のコマンドは、上記のコマンドと同様に動作しますが、異なるディレクトリの ACL を取得します。

Get-Acl -Path 'C:\Example\Directory'

例 3:レジストリキーの権限を確認する

以下のコマンドは、HKLM:\SOFTWARE\ExampleKey にあるレジストリキーのアクセス制御リスト(ACL)を取得します。このコマンドは、その特定のレジストリキーに関連する権限とアクセスルールに関する情報を返します。

Get-Acl -Path 'HKLM:\SOFTWARE\ExampleKey'

例 4:アクセスの種類によるフィルタリング:

-Access パラメーターを使用して、特定のタイプのアクセスルール(例:読み取り、書き込み)のみを取得できます。

Get-Acl -Path 'C:\Example\File.txt' -Access Read, Write

例 5:出力フォーマット:

Format-TableFormat-List のようなコマンドレットを使用して、出力をより読みやすくフォーマットできます。

Get-Acl -Path 'C:\Example\File.txt' | Format-Table -Property Path, AccessToString

PowerShell で特定のユーザーの権限を確認するために Get-Acl を使用する

時には特定のユーザーの権限を確認する必要があります。特定のファイルへのアクセスを制御するためのさまざまな目的で必要です。PowerShell の助けを借りて、ファイルへのアクセス権を簡単に確認できます。

以下は、システム管理者の権限状況を確認するための PowerShell スクリプトです。

Get-Acl g:\ | Select-Object -ExpandProperty Access | Where-Object identityreference -EQ "BUILTIN\Administrators"

このコードは、g:\にあるディレクトリのアクセス制御情報を取得し、その情報をフィルタリングして"Administrators"グループのアクセスルールのみを表示します。これは特定のディレクトリの監査や権限の管理に役立ちます。

上記のコードの出力は、g:\にあるディレクトリに対して"Administrators"グループに特に割り当てられたアクセスルールのリストになります。出力には、付与された権限、権限が適用されるアイデンティティ、およびその他の関連情報が含まれます。

FileSystemRights  : 268435456
AccessControlType : Allow
IdentityReference : BUILTIN\Administrators
IsInherited       : False
InheritanceFlags  : ContainerInherit, ObjectInherit
PropagationFlags  : InheritOnly

FileSystemRights  : FullControl
AccessControlType : Allow
IdentityReference : BUILTIN\Administrators
IsInherited       : False
InheritanceFlags  : None
PropagationFlags  : None

結論

Get-Acl は、Windows 環境内での権限管理において重要な役割を果たす強力なコマンドレットです。その構文を理解し、さまざまなパラメーターを活用することにより、管理者はアクセス制御情報を効率的に取得および分析できます。

この知識は、安全で整然としたコンピューティング環境を維持するために不可欠です。

権限変更時には注意を払い、ACL を変更する前に適切なバックアップを常に用意しておくことを忘れないでください。Get-Acl を PowerShell ツールキットの一部として使用すれば、安全で適切に管理された Windows 環境を維持するための貴重なツールを手に入れることができます。