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>]

说明

此 cmdlet 仅在 Windows 平台上可用。

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

从 Windows PowerShell 3.0 开始,可以使用 Get-AclInputObject 参数来获取没有路径的对象的安全描述符。

示例

示例 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 cmdlet 获取表示每个日志文件的安全描述符的对象。 它使用管道运算符(|)将结果发送到 Format-List cmdlet。 该命令使用 Format-List属性 参数仅显示每个安全描述符对象的 PsPathSDDL 属性。

列表通常用于 PowerShell,因为长值在表中显示为截断。

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

示例 3 - 获取 ACL 的审核条目计数

此示例获取 C:\Windows 目录中 .log 文件的安全描述符,其名称以 s开头。

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

它使用 Audit 参数从安全描述符中的 SACL 获取审核记录。 然后,它使用 ForEach-Object cmdlet 对与每个文件关联的审核记录数进行计数。 结果是表示每个日志文件的审核记录数的数字列表。

示例 4 - 获取注册表项的 ACL

此示例使用 Get-Acl cmdlet 获取注册表的控制子项(HKLM:\SYSTEM\CurrentControlSet\Control)的安全描述符。

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

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

示例 5 - 使用 **InputObject 获取 ACL

此示例使用 Get-AclInputObject 参数来获取存储子系统对象的安全描述符。

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

参数

-Audit

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

类型:SwitchParameter
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-Exclude

省略指定的项。 此参数的值限定 Path 参数。 输入路径元素或模式,例如 *.txt。 允许通配符。

类型:String[]
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:True

-Filter

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

类型:String
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:True

-Include

仅获取指定的项。 此参数的值限定 Path 参数。 输入路径元素或模式,例如 *.txt。 允许通配符。

类型:String[]
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:True

-InputObject

获取指定对象的安全描述符。 输入包含对象或获取对象的命令的变量。

不能通过管道将对象(而非路径)传递给 Get-Acl。 而是在命令中显式使用 InputObject 参数。

此参数在 Windows PowerShell 3.0 中引入。

类型:PSObject
Position:Named
默认值:None
必需:True
接受管道输入:False
接受通配符:False

-LiteralPath

指定资源的路径。 与 Path不同,LiteralPath 参数的值与键入时完全相同。 不会将任何字符解释为通配符。 如果路径包含转义字符,请将它括在单引号中。 单引号告知 PowerShell 不要将任何字符解释为转义序列。

此参数在 Windows PowerShell 3.0 中引入。

类型:String[]
别名:PSPath, LP
Position:Named
默认值:None
必需:False
接受管道输入:True
接受通配符:False

-Path

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

参数名称(“Path”)是可选的。

类型:String[]
Position:1
默认值:None
必需:False
接受管道输入:True
接受通配符:True

输入

String

可以通过管道传递包含此 cmdlet 路径的字符串。

输出

FileSecurity

DirectorySecurity

RegistrySecurity

此 cmdlet 返回一个对象,该对象表示它获取的 ACL。 对象类型取决于 ACL 类型。

备注

此 cmdlet 仅在 Windows 平台上可用。

默认情况下,Get-Acl 显示资源的 PowerShell 路径(<provider>::<resource-path>)、资源的所有者,以及资源自由访问控制列表(DACL)中访问控制项的列表(数组)和“Access”。 DACL 列表由资源所有者控制。

将结果格式化为列表(Get-Acl | Format-List),除了路径、所有者和访问列表之外,PowerShell 还显示以下属性和属性值:

  • :所有者的安全组。
  • 审核:系统访问控制列表(SACL)中条目的列表(数组)。 SACL 指定 Windows 为其生成审核记录的访问尝试的类型。
  • Sddl:安全描述符定义语言格式的单个文本字符串中显示的资源的安全描述符。 PowerShell 使用 GetSddlForm 安全描述符方法来获取此数据。

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