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)
我正在尝试提取有关给定目录中子文件夹的少量信息。我是 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)