HOWTO · PowerShell

如何在 PowerShell 中為特定用戶獲取 ACL

本教程演示如何在 PowerShell 中使用 get-acl 檢查特定用戶的權限。

本頁內容

PowerShell,一個強大的自動化工具,提供了許多命令行工具來管理 Windows 環境的各個方面。

其中一個基本的命令行工具是 Get-Acl,即訪問控制列表。它允許管理員檢索和檢查文件、文件夾或註冊表鍵的安全描述符(權限)。

在本文中,我們將深入探討如何專門為特定用戶使用 Get-Acl 的細節。我們將涵蓋語法、選項和實用示例,以幫助您有效管理 Windows 環境中的訪問權限。

PowerShell 中的 Get-Acl 介紹

Get-Acl 是一個 PowerShell 命令行工具,用於檢索文件、目錄或註冊表鍵的訪問控制列表(ACL)。該 ACL 包含一個訪問控制條目(ACE)的列表,這些條目定義誰可以訪問該對象以及他們具有何種訪問級別。

理解和管理權限對於維護安全和組織良好的計算環境至關重要。Get-Acl 使管理員有能力通過編程手段檢查和修改權限。

基本語法:

Get-Acl [-Path] <String[]> [-Audit] [-AllCentralAccessPolicies] [-Directory] [-Filter <String>] [-Include <String[]>] [-LiteralPath <String[]>] [-Owner] [-Access <String>] [-UseTransaction] [<CommonParameters>]

常見參數:

-Path 指定要檢索 ACL 的項目的路徑。
-Audit 檢索審計規則。
-Owner 檢索所有者信息。
-Access 僅檢索特定類型的訪問規則。
-UseTransaction 允許對命令行工具使用交易。
-InputObject 提供特定對象的安全描述符。
-LiteralPath 用於指定資源或文件的路徑。此參數的值應按原樣使用。

進階選項:

-AllCentralAccessPolicies 檢索所有中央訪問策略。
-Directory 指定該項目為目錄。
-Filter 根據指定標準過濾結果。
-Include 僅檢索指定的項目。
-Exclude 省略特定項目。您需要在此處提供路徑。

為特定用戶檢索 ACL

使用 Path 參數

檢索特定用戶 ACL 的最簡單方法是使用 Path 參數以及項目(文件、目錄或註冊表鍵)的路徑。

Get-Acl -Path 'C:\Example\File.txt'

使用 Where-Object 指定用戶

要過濾特定用戶的結果,您可以將 Where-Object 命令行工具與 Get-Acl 結合使用。這樣可以僅選擇與所需用戶相關的 ACE。

Get-Acl -Path 'C:\Example\File.txt' | Where-Object { $_.Access | Where-Object { $_.IdentityReference -eq 'DOMAIN\User' } }

該代碼正在查找有關特定訪問規則,這些規則位於 C:\Example\File.txt 的 ACL 中,涉及身份為 'DOMAIN\User' 的用戶。如果有任何匹配的規則,它們將顯示在輸出中。如果沒有,輸出將為空。

解釋 Get-Acl 輸出

訪問規則

Get-Acl 的輸出將包含有關訪問規則的信息。每條規則指定一個用戶或組、訪問類型(例如,讀取、寫入),以及該規則是否允許或拒絕該訪問。

審計規則

如果使用了 -Audit 參數,則審計規則也會被包含在內。這些規則指定應該為特定用戶或組審計的訪問類型。

所有者和組

Get-Acl 還可以檢索有關該項目所有者及其相關組的信息。

實用示例

示例 1:檢索文件的 ACL

下面的命令檢索位於 C:\Example\File.txt 的訪問控制列表(ACL)。該命令將返回與該特定文件相關的權限和訪問規則的信息。

Get-Acl -Path 'C:\Example\File.txt'

示例 2:獲取目錄的 ACL

下面的命令與上述命令相同,但檢索不同目錄的 ACL。

Get-Acl -Path 'C:\Example\Directory'

示例 3:檢查註冊表鍵的權限

下面的命令檢索位於 HKLM:\SOFTWARE\ExampleKey 的訪問控制列表(ACL)。該命令將返回與該特定註冊表鍵相關的權限和訪問規則的信息。

Get-Acl -Path 'HKLM:\SOFTWARE\ExampleKey'

示例 4:按訪問類型過濾:

您可以使用 -Access 參數僅檢索特定類型的訪問規則(例如,讀取、寫入)。

Get-Acl -Path 'C:\Example\File.txt' -Access Read, Write

示例 5:輸出格式化:

您可以使用像 Format-TableFormat-List 的命令行工具來格式化輸出,以提高可讀性。

Get-Acl -Path 'C:\Example\File.txt' | Format-Table -Property Path, AccessToString

使用 Get-Acl 在 PowerShell 中檢查特定用戶的權限

有時,我們需要檢查特定用戶的權限。我們需要這樣做有多種原因,例如控制對特定文件的訪問。借助 PowerShell,我們可以輕鬆查看訪問該文件的權限。

以下是一個 PowerShell 腳本,我們將通過它檢查系統管理員的權限狀態。

Get-Acl g:\ | Select-Object -ExpandProperty Access | Where-Object identityreference -EQ "BUILTIN\Administrators"

此代碼檢索位於 g:\ 的目錄的訪問控制信息,然後過濾該信息,只顯示 "Administrators" 組的訪問規則。這對於審計或管理特定目錄的權限非常有用。

上述代碼的輸出將是分配給位於 g:\ 的目錄的 "Administrators" 組的訪問規則列表。輸出將包括授予的權限、適用於該權限的身份和其他相關信息。

FileSystemRights  : 268435456
AccessControlType : Allow
IdentityReference : BUILTIN\Administrators
IsInherited       : False
InheritanceFlags  : ContainerInherit, ObjectInherit
PropagationFlags  : InheritOnly

FileSystemRights  : FullControl
AccessControlType : Allow
IdentityReference : BUILTIN\Administrators
IsInherited       : False
InheritanceFlags  : None
PropagationFlags  : None

結論

Get-Acl 是一個強大的命令行工具,在管理 Windows 環境中的權限方面扮演著至關重要的角色。通過了解其語法並利用各種參數,管理員可以有效地檢索和分析訪問控制信息。

這些知識對於維護安全且組織良好的計算環境是無價的。

請記住,在對權限進行更改時要小心,並在修改 ACL 之前始終做好適當的備份。將 Get-Acl 作為您的 PowerShell 工具包的一部分,您將擁有一個維護安全且管理良好的 Windows 環境的有價值工具。