如何使用 PowerShell 管理 NTFS 权限

  1. 在 PowerShell 中使用 Get-ACL 查看 NTFS 权限
  2. 在 PowerShell 中显示 NTFS 权限
  3. 在 PowerShell 中递归获取文件上的 ACL
如何使用 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 如何显示权限的示例。

使用高级安全设置的 ACL

本文中的以下示例将路径分配给变量 $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 命令将所有详细信息导出到一个文本文件中,尤其是在您的目标文件夹中有许多文件的情况下。

Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn