获取资源(例如文件或注册表项)的安全描述符。

语法

Get-Acl [[-Path] <string[]>] [-Audit] [-Exclude <string[]>] [-Filter <string>] [-Include <string[]>] [-UseTransaction] [<CommonParameters>]

说明

Get-Acl cmdlet 获取用于表示文件或资源的安全描述符的对象。安全描述符包含资源的访问控制列表 (ACL)。ACL 可指定用户和用户组要访问资源所需具备的权限。

参数

-Audit

从系统访问控制列表 (SACL) 中获取安全描述符的审核数据。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-Exclude <string[]>

忽略指定项。此参数的值对 Path 参数进行限定。请输入路径元素或模式,例如“*.txt”。允许使用通配符。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-Filter <string>

以提供程序的格式或语言指定筛选器。此参数的值对 Path 参数进行限定。筛选器的语法(包括通配符的使用)取决于提供程序。筛选器比其他参数更有效,因为提供程序是在检索对象时应用筛选器,而不是在检索对象后再由 Windows PowerShell 筛选对象。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-Include <string[]>

只检索指定项。此参数的值对 Path 参数进行限定。请输入路径元素或模式,例如“*.txt”。允许使用通配符。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-Path <string[]>

指定资源的路径。Get-Acl 获取该路径所指示的资源的安全描述符。允许使用通配符。如果省略了 Path 参数,则 Get-Acl 将获取当前目录的安全描述符。

参数名(“Path”)为可选项。

是否为必需?

false

位置?

1

默认值

是否接受管道输入?

true (ByValue, ByPropertyName)

是否接受通配符?

false

-UseTransaction

将命令包含在活动事务中。仅当正在执行事务时,此参数才有效。有关详细信息,请参阅 about_Transactions。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

<CommonParameters>

此 cmdlet 支持通用参数:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。有关详细信息,请参阅 about_Commonparameters.

输入和输出

输入类型是指可通过管道传递给 cmdlet 的对象的类型。返回类型是指 Cmdlet 所返回对象的类型。

输入

System.String

可以通过管道将包含路径的字符串传递给 Get-Acl。

输出

System.Security.AccessControl

Get-Acl 返回一个表示它所获取的 ACL 的对象。对象类型取决于 ACL 类型。

说明

默认情况下,Get-Acl 显示资源的 Windows PowerShell 路径(<提供程序>::<资源路径>)、资源的所有者和“Access”(资源的随机访问控制列表 (DACL) 中访问控制条目的列表或数组)。DACL 列表由资源所有者控制。

在将结果的格式设置为列表(“get-acl | format-list”)时,除了路径、所有者和访问列表之外,Windows PowerShell 还将显示以下字段:

-- Group:所有者的安全组。

-- Audit:系统访问控制列表 (SACL) 中的条目的列表或数组。SACL 指定 Windows 为其生成审核记录的访问尝试的类型。

-- Sddl:资源的安全描述符以安全描述符定义语言格式显示在单个文本字符串中。Windows PowerShell 采用安全描述符的 GetSddlForm 方法检索此数据。

由于文件系统和注册表提供程序支持 Get-Acl,因此可以使用 Get-Acl 来查看文件系统对象(例如文件和目录)以及注册表对象(例如注册表项和条目)的 ACL。

示例 1

C:\PS>get-acl C:\windows

说明
-----------
此命令将获取 C:Windows 目录的安全描述符。






示例 2

C:\PS>get-acl C:\Windows\k*.log | format-list -property PSPath, Sddl

说明
-----------
此命令将获取 C:\Windows 目录中名称以“k”开头的所有 .log 文件的 Windows PowerShell 路径和 SDDL。

该命令使用 Get-Acl 来获取表示每个日志文件的安全描述符的对象。它使用管道运算符 (|) 将结果发送到 Format-List cmdlet。该命令使用 Format-List 的 Property 参数仅显示每个安全描述符对象的 PsPath 和 SDDL 属性。

Windows PowerShell 中会经常使用列表,因为表中较长的值有可能会被截断。

SDDL 值对于系统管理员非常重要,因为这些值是包含安全描述符中所有信息的简单文本字符串。同样它们还便于传递和存储,并可以在需要时进行分析。






示例 3

C:\PS>get-ACL c:/windows/k*.log -Audit | foreach-object { $_.Audit.Count }

说明
-----------
此命令将获取 C:\Windows 目录中名称以“k”开头的 .log 文件的安全描述符。它使用 Audit 参数从 SACL 检索安全描述符中的审核记录。随后,它使用 For-EachObject 参数来计算与每个文件关联的审核记录的数量。结果为表示每个日志文件的审核记录数的数字列表。






示例 4

C:\PS>get-acl -path hklm:\system\currentcontrolset\control | format-list

说明
-----------
此命令使用 Get-Acl 来获取注册表的 Control 子项 (HKLM\SYSTEM\CurrentControlSet\Control) 的安全描述符。

Path 参数指定 Control 子项。管道运算符 (|) 将 Get-Acl 检索到的安全描述符传递到 Format-List 命令,该命令将安全描述符的属性设置为列表格式以便于阅读。






另请参阅




目录