如何使用 PowerShell 管理 NTFS 權限

  1. 在 PowerShell 中使用 Get-ACL 查看 NTFS 權限
  2. 在 PowerShell 中顯示 NTFS 權限
  3. 在 PowerShell 中遞歸獲取檔案的 ACL
如何使用 PowerShell 管理 NTFS 權限

管理 NTFS 權限使用圖形介面是非常耗時的,特別是在處理許多用戶或群組時。然而,特定的 PowerShell Cmdlets 可以檢索和指派 NTFS 權限。

本文將討論如何使用 Get-ACL 命令來管理 NTFS 權限。

在 PowerShell 中使用 Get-ACL 查看 NTFS 權限

存取控制列表(或 ACL)是一組存取控制條目(ACE),每個列表包含一個 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