Get-Acl

ファイル、レジストリ キーなどのリソースのセキュリティ記述子を取得します。

構文

Get-Acl
   [[-Path] <String[]>]
   [-Audit]
   [-Filter <String>]
   [-Include <String[]>]
   [-Exclude <String[]>]
   [<CommonParameters>]
Get-Acl
   -InputObject <PSObject>
   [-Audit]
   [-Filter <String>]
   [-Include <String[]>]
   [-Exclude <String[]>]
   [<CommonParameters>]
Get-Acl
   [-LiteralPath <String[]>]
   [-Audit]
   [-Filter <String>]
   [-Include <String[]>]
   [-Exclude <String[]>]
   [<CommonParameters>]

説明

このコマンドレットは、Windows プラットフォームでのみ使用できます。

コマンドレットは Get-Acl 、ファイルまたはリソースのセキュリティ記述子を表すオブジェクトを取得します。 セキュリティ記述子には、リソースのアクセス制御リスト (ACL) が含まれます。 ACL は、リソースにアクセスするユーザーおよびユーザー グループに割り当てられるアクセス許可を指定します。

Windows PowerShell 3.0 以降では、InputObject パラメーターGet-Aclを使用して、パスのないオブジェクトのセキュリティ記述子を取得できます。

例 1 - フォルダーの ACL を取得する

この例では、ディレクトリのセキュリティ記述子を C:\Windows 取得します。

Get-Acl C:\Windows

例 2 - ワイルドカードを使用してフォルダーの ACL を取得する

この例では、名前が . で始まるsディレクトリ内C:\Windowsのすべての.logファイルの PowerShell パスと SDDL を取得します。

Get-Acl C:\Windows\s*.log | Format-List -Property PSPath, Sddl

このコマンドは、コマンドレットを Get-Acl 使用して、各ログ ファイルのセキュリティ記述子を表すオブジェクトを取得します。 パイプライン演算子 (|) を使用して、コマンドレットに結果を Format-List 送信します。 このコマンドは、 Property パラメーター Format-List を使用して、各セキュリティ記述子オブジェクトの PsPath プロパティと SDDL プロパティのみを表示します。

長い値はテーブルで切り捨てられるため、PowerShell ではリストがよく使用されます。

SDDL 値は、システム管理者に有用です。それは、これらの値がセキュリティ記述子内にすべての情報を含む単純なテキスト文字列であるためです。 そのため、これらの値は簡単に渡して保存でき、必要なときに解析できます。

例 3 - ACL の監査エントリの数を取得する

この例では、名前が . で始まるsディレクトリ内の.logファイルのC:\Windowsセキュリティ記述子を取得します。

Get-Acl C:\Windows\s*.log -Audit | ForEach-Object { $_.Audit.Count }

ここでは、Audit パラメーターを使用して、セキュリティ記述子の SACL から監査レコードを取得します。 次に、コマンドレットを ForEach-Object 使用して、各ファイルに関連付けられている監査レコードの数をカウントします。 結果として、各ログ ファイルの監査レコードの数を表す番号のリストが得られます。

例 4 - レジストリ キーの ACL を取得する

この例では、コマンドレットを Get-Acl 使用して、レジストリの Control サブキー (HKLM:\SYSTEM\CurrentControlSet\Control) のセキュリティ記述子を取得します。

Get-Acl -Path HKLM:\System\CurrentControlSet\Control | Format-List

Path パラメーターは、Control サブキーを指定します。 パイプライン演算子 (|) は、コマンドに渡される Get-Acl セキュリティ記述子を Format-List 渡します。このコマンドは、セキュリティ記述子のプロパティをリストとして書式設定して、読みやすくします。

例 5 - **InputObject** を使用して ACL を取得する

この例では、 InputObject パラメーターを Get-Acl 使用して、ストレージ サブシステム オブジェクトのセキュリティ記述子を取得します。

Get-Acl -InputObject (Get-StorageSubSystem -Name S087)

パラメーター

-Audit

システム アクセス制御リスト (SACL) からセキュリティ記述子の監査データを取得します。

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-Exclude

指定した項目を除外します。 このパラメーターの値は、Path パラメーターを修飾します。 パス要素またはパターンを入力します (例: *.txt. ワイルドカードを使用できます。

Type:String[]
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:True
-Filter

プロバイダーの形式や言語でフィルターを指定します。 このパラメーターの値は、Path パラメーターを修飾します。 ワイルドカードを使用できるかどうかなど、フィルターの構文はプロバイダーによって異なります。 フィルターは、取得後に PowerShell でオブジェクトをフィルター処理するのではなく、オブジェクトを取得するときにフィルターを適用するため、他のパラメーターよりも効率的です。

Type:String
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:True
-Include

指定された項目だけを取得します。 このパラメーターの値は、Path パラメーターを修飾します。 パス要素またはパターンを入力します (例: *.txt. ワイルドカードを使用できます。

Type:String[]
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:True
-InputObject

指定したオブジェクトのセキュリティ記述子を取得します。 オブジェクトが格納されている変数、またはオブジェクトを取得するコマンドを入力します。

パス Get-Acl以外のオブジェクトを . 代わりに、InputObject パラメーターをコマンド内で明示的に使用します。

このパラメーターは、Windows PowerShell 3.0 で導入されました。

Type:PSObject
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-LiteralPath

リソースへのパスを指定します。 Path と異なり、LiteralPath パラメーターの値は入力したとおりに使用されます。 ワイルドカードとして解釈される文字はありません。 パスにエスケープ文字が含まれている場合は、単一引用符で囲みます。 単一引用符は、文字をエスケープ シーケンスとして解釈しないように PowerShell に指示します。

このパラメーターは、Windows PowerShell 3.0 で導入されました。

Type:String[]
Aliases:PSPath
Position:Named
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-Path

リソースへのパスを指定します。 Get-Acl は、パスによって示されるリソースのセキュリティ記述子を取得します。 ワイルドカードを使用できます。 Path パラメーターを省略した場合は、Get-Acl現在のディレクトリのセキュリティ記述子を取得します。

パラメーター名 ("Path") は省略可能です。

Type:String[]
Position:1
Default value:None
Accept pipeline input:True
Accept wildcard characters:True

入力

String

へのパス Get-Aclを含む文字列をパイプできます。

出力

System.Security.AccessControl.FileSecurity, System.Security.AccessControl.DirectorySecurity, System.Security.AccessControl.RegistrySecurity

Get-Acl は、取得する ACL を表すオブジェクトを返します。 オブジェクトの種類は、ACL の種類に依存します。

メモ

このコマンドレットは、Windows プラットフォームでのみ使用できます。

既定では、リソース (<provider>::<resource-path>)、Get-Aclリソースの所有者、およびリソースの随意アクセス制御リスト (DACL) のアクセス制御エントリの一覧 (配列) である "Access" への PowerShell パスが表示されます。 DACL リストは、リソースの所有者によって制御されます。

結果をリスト () として書式設定すると、パス、Get-Acl | Format-List所有者、アクセス リストに加えて、PowerShell には次のプロパティとプロパティ値が表示されます。

  • グループ: 所有者のセキュリティ グループ。
  • 監査: システム アクセス制御リスト (SACL) 内のエントリのリスト (配列)。 SACL は、Windows が監査レコードを生成するアクセス試行の種類を指定します。
  • Sddl: セキュリティ記述子定義言語形式で 1 つのテキスト文字列で表示されるリソースのセキュリティ記述子。 PowerShell では、セキュリティ記述子の GetSddlForm メソッドを使用してこのデータを取得します。

ファイル システムとレジストリ プロバイダーでサポートされているため Get-Acl 、ファイルやディレクトリなどのファイル システム オブジェクトとレジストリ オブジェクト (レジストリ キーやエントリなど) の ACL を表示するために使用 Get-Acl できます。