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 平台上可用。

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

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

示例

示例 1 - 获取文件夹的 ACL

此示例获取目录的安全描述符 C:\Windows

Get-Acl C:\Windows

示例 2 - 使用通配符获取文件夹的 ACL

此示例获取目录中名称以 s开头的所有.log文件的 C:\Windows PowerShell 路径和 SDDL。

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

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

Lists通常在 PowerShell 中使用,因为表中的长值似乎被截断。

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

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

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

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

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

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

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

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

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

示例 5 - 使用 InputObject 获取 ACL

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

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

参数

-Audit

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

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

-Exclude

忽略指定项。 此参数值使 Path 参数有效。 请输入路径元素或模式,例如 *.txt。 允许使用通配符。

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

-Filter

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

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

-Include

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

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

-InputObject

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

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

此参数是在 Windows PowerShell 3.0 中引入的。

Type:PSObject
Position:Named
Default value:None
Required:True
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
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Path

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

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

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

输入

String

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

输出

FileSecurity

DirectorySecurity

RegistrySecurity

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

备注

此 cmdlet 仅在 Windows 平台上可用。

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

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

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

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