我试图做以下事情 -
$OutFile = "C:\temp\Audit_Permissions.csv"
$Header = "Folder Path,IdentityReference,AccessControlType,IsInherited,InheritanceFlags,PropagationFlags"
Del $OutFile
Add-Content -Value $Header -Path $OutFile
$RootPath = "\\netapp\DATA"
$Folders = dir $RootPath -recurse | where {$_.psiscontainer -eq $true}
foreach ($Folder in $Folders){
$ACLs = get-acl $Folder.fullname | ForEach-Object { $_.Access }
Foreach ($ACL in $ACLs){
$OutInfo = $Folder.Fullname + "," + $ACL.IdentityReference + "," + $ACL.AccessControlType + "," + $ACL.IsInherited + "," + $ACL.InheritanceFlags + "," + $ACL.PropagationFlags
Add-Content -Value $OutInfo -Path $OutFile
}}
问题是文件夹结构深入大约3或4级,我不再需要进行递归。我希望忽略yyyy \ mm \ dd格式的数千个文件夹的潜力。 yyyy是第一个文件夹。
所以我希望审核这样的事情 -
\\netapp\data\folder1
\\netapp\data\folder2
\\netapp\data\folder2\folderA
\\netapp\data\folder3
\\netapp\data\folder3\folderA
\\netapp\data\folder3\folderA\testfolder
但是当它在任何一棵树上碰到下面的东西时我都想让它停止下去 -
\\netapp\data\folder3\folderA\testfolder\yyyy
答案 0 :(得分:2)
这是使用yyyy省略文件夹名称的一种方法。 如果想要更精确,可以调整RegEx部分。
$Folders = dir $RootPath -recurse | where {($_.psiscontainer -eq $true) -AND ($_.FullName -notmatch '\\\d{4}($|\\)'}