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-Acl
InputObject 参数来获取没有路径的对象的安全描述符。
示例
示例 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
的 属性 参数仅显示每个安全描述符对象的 PsPath 和 SDDL 属性。
列表通常用于 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-Acl
InputObject 参数来获取存储子系统对象的安全描述符。
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 |
输入
可以通过管道传递包含此 cmdlet 路径的字符串。
输出
此 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,如文件和目录,以及注册表项和条目等注册表对象。