停止文件夹递归时

时间:2015-03-06 02:31:06

标签: powershell recursion

我试图做以下事情 -

$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

1 个答案:

答案 0 :(得分:2)

这是使用yyyy省略文件夹名称的一种方法。 如果想要更精确,可以调整RegEx部分。

$Folders = dir $RootPath -recurse | where {($_.psiscontainer -eq $true) -AND ($_.FullName -notmatch '\\\d{4}($|\\)'}