【发布时间】:2020-09-28 19:52:45
【问题描述】:
我正在尝试提取给定目录中子文件夹的少量信息。我对 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 设置,但这似乎仅限于功能,我不知道如何将其包含在我目前拥有的内容中。任何指导将不胜感激!
【问题讨论】:
-
您可以计算深度并丢弃不符合您需要的深度。例如,
('C:\Program Files\Common Files\microsoft shared\TextConv' -replace '[^\\]', '').Length将给出 4 作为深度。