如何解决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
设置,但似乎只限于功能,而且我不知道如何将其包含在当前内容中。任何指导将不胜感激!
解决方法
您可以做的是获取每个级别的非递归列表,根文件夹,然后是-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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。