[英]How can you get a powershell to list the permissions of folders within a directory while ignoring groups that have access?
我對 Powershell 還是比較陌生,並且一直在斷斷續續地研究這個問題。
我們有幾個共享驅動器,我正在嘗試查找有權訪問其中文件夾但忽略組和任何系統用戶的所有個人用戶的列表。
到目前為止,這是我一直在嘗試使用的方法(使用最簡單的方法,在我的桌面上進行測試)
Get-ChildItem -Path "C:\Users\default\Desktop\TestFolder" -Directory |
Get-ACL |
Where IdentityReference -notlike "NT AUTHORITY\SYSTEM" |
Format-Table -Wrap
這不會隱藏“TestFolder”中文件夾的 output 中的“NT AUTHORITY\SYSTEM”。 我已經嘗試了幾次迭代/不同的方式來解決 go 但仍然遇到同樣的問題。
我也不知道如何對 output 隱藏群組。
我將不勝感激任何幫助!
繼續我的評論......
解決方案是擴展Access的正確屬性,然后按IdentityReference的屬性進行過濾; 因為這只是一個子屬性:
Get-ChildItem -Path "C:\Users\default\Desktop\TestFolder" -Directory |
Get-Acl |
ForEach-Object -Begin `
{
$toExclude = "NT AUTHORITY\\SYSTEM|BUILTIN\\"
} -Process `
{
$Directory = $_.Path.Replace("Microsoft.PowerShell.Core\FileSystem::","")
$_ | Select-Object -ExpandProperty "Access" | Where-Object -Property "IdentityReference" -NotMatch $toExclude |
Add-Member -MemberType "NoteProperty" -Name "Directory" -Value $Directory -PassThru
}
在這里,我們利用|
在$toExclude
中表示要對我們的-NotMatch
運算符使用的 "或" 值的分隔。
-NotMatch
運算符使用正則表達式(也稱為/縮寫為RegEx ),這允許我們使用這樣的分隔符。$toExclude
之類的准備工作放在那里是理想的選擇。 在過濾掉不需要的值后,使用Add-Member
,我們可以通過在Path的管道屬性中引用當前的 object 添加當前目錄,將其添加回 object,並使用-PassThru
將其向下傳遞到管道。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.