如何使用 PowerShell 管理 NTFS 权限

管理 NTFS 权限时使用 GUI 是耗时的,尤其是在处理多个用户或组时。然而,特定的 PowerShell cmdlet 可以检索和分配 NTFS 权限。
本文将讨论使用 Get-ACL
命令管理 NTFS 权限。
在 PowerShell 中使用 Get-ACL
查看 NTFS 权限
访问控制列表(或 ACL)是一个访问控制条目(ACE)的列表,每个列表包含一个识别受托人的 ACE 并指定访问权限。
可安全对象的安全描述符可以是两种类型之一:DACL 或 SACL。DACL 确定被允许或拒绝访问的用户和组,而 SACL 控制访问。
PowerShell 允许我们快速使用 Get-ACL
cmdlet 查看 NTFS 权限。我们将在接下来的部分中学习如何使用此 cmdlet 查看文件或文件夹的 NTFS 权限。
在 PowerShell 中显示 NTFS 权限
传统上,我们通过右键单击文件夹,点击 属性
,选择 安全
选项卡,然后点击 高级
按钮来查看 ACL。我们可以在下面看到 GUI 如何显示权限的示例。
本文中的以下示例将路径分配给变量 $dir
。
示例代码:
$dir = "C:\Windows\Temp"
Get-Acl -Path $dir
输出:
Path Owner Access
---- ----- ------
Temp DESKTOP-7GI1260\KentMarion BUILTIN\Administrators Allow FullControl...
但是,以 -Path
参数运行 Get-Acl
命令将仅显示和输出文件夹级别的访问控制列表。如果我们想检查文件级别的访问控制列表怎么办?
在 PowerShell 中递归获取文件上的 ACL
PowerShell 的一个优势功能是使用管道。PowerShell 管道使用管道操作符(|
)组合一系列命令。
我们可以使用管道方法获取文件级别的访问控制列表。
我们需要使用 Get-ChildItem
命令来实现此场景。Get-ChildItem
命令提取目录中的所有文件和文件夹。
让我们使用之前的 $dir
变量作为示例。
示例代码:
$dir = "C:\Windows\Temp"
Get-ChildItem $dir -Recurse | Get-Acl | Format-List | Out-File "C:\PS\output.txt"
在上述示例中,-Recurse
开关参数对于循环遍历所有文件并执行 Get-Acl
命令非常重要。通过执行上述代码片段,我们将能够获取 Temp
文件夹中所有文件的所有访问控制列表权限。
同样建议使用 Out-File
命令将所有详细信息导出到一个文本文件中,尤其是在您的目标文件夹中有许多文件的情况下。
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn