Powershell 4 中的递归深度

Recursion depth in Powershell 4

我正在尝试提取有关给定目录中子文件夹的少量信息。我是 Powershell 的新手,但经过一周左右的摸索,我设法将它组合在一起,这非常适合我在 Powershell 5 上的目的。问题是,我需要制作一个等效的脚本 运行 在 Powershell 4 中。唯一似乎不起作用的是 -Depth,这是必需的。

$FolderPath = dir -Directory -Path "D:\FILEPATH\" -Recurse -Force -Depth 3
$Report = @()
Foreach ($Folder in $FolderPath) {
    $Acl = Get-Acl  -Path $Folder.FullName
    foreach ($Access in $acl.Access)
        {
        if (!($Access.IdentityReference -in $Exclude)) {
            $Properties = [ordered]@{
            'Folder and Location'=$Folder.FullName;
            'AD Group or User'=$Access.IdentityReference; 
            'Permissions'=$Access.FileSystemRights;
            'Inherited'=$Access.IsInherited}

            $Report += New-Object -TypeName PSObject -Property $Properties
        }
    }
}
$Report | Export-Csv -path "FILEPATH\Test.csv"

我尝试在其中添加 "\*\**\***" 和几个变体以获得所需的结果,但它们要么从第 3 个子文件夹向下提供给我,要么什么也没返回。我还研究了 Get-ChildItemToDepth 设置,但它似乎仅限于功能,我不知道如何将其包含在我目前拥有的内容中。任何指导将不胜感激!

您可以为每个级别获取一个 non-recursive 列表,根文件夹,然后是 -depth 3 中包含的三个递归级别。你可以在你的 PS5 机器上 运行 这个,然后检查 $FolderPath.count 与你使用 -Depth 3 得到的结果,你应该得到相同的计数。

$FolderPath = $(dir -Directory -Path "D:\FILEPATH\*" -Force
dir -Directory -Path "D:\FILEPATH\*\*" -Force
dir -Directory -Path "D:\FILEPATH\*\*\*" -Force
dir -Directory -Path "D:\FILEPATH\*\*\*\*" -Force)