如何在 PowerShell 中為特定用戶獲取 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-Table
或 Format-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 環境的有價值工具。
Aminul Is an Expert Technical Writer and Full-Stack Developer. He has hands-on working experience on numerous Developer Platforms and SAAS startups. He is highly skilled in numerous Programming languages and Frameworks. He can write professional technical articles like Reviews, Programming, Documentation, SOP, User manual, Whitepaper, etc.
LinkedIn