2
下面的PowerShell脚本将列出所有共享文件夹(不包括隐藏的共享文件夹),然后列出所有子文件夹并最终获取每个文件夹的ACL信息并导出到CSV文件。只使用PowerShell递归子文件夹的x个级别
但是,我试图设置它可以钻入的子文件夹的限制。例如,如果将其设置为3,则该脚本将获得前三个子文件夹的ACL信息。我怎样才能做到这一点?
输入:
path=\\server\sharefolder0\subfolder01\subfolder02
path=\\server\sharefolder1\subfolder11\subfolder12\subfolder13\subfolder14
path=\\server\sharefolder2
预期结果:
path=\\server\sharefolder0
path=\\server\sharefolder0\subfolder01
path=\\server\sharefolder0\subfolder01\subfolder02
path=\\server\sharefolder1
path=\\server\sharefolder1\subfolder11
path=\\server\sharefolder1\subfolder11\subfolder12
path=\\server\sharefolder2
这是代码:
$getSRVlist = Get-Content .\server.txt
$outputDirPath=".\DirPathList.txt"
$outputACLInfo=".\ACLInfo.CSV"
$header="FolderPath,IdentityReference,Rights"
Del $outputACLInfo
add-content -value $header -path $outputACLInfo
foreach ($readSRVlist in $getSRVlist)
{
foreach ($readShareInfoList in $getShareInfoList=Get-WmiObject Win32_Share
-computerName $readSRVlist | Where {$_.name -notlike "*$"} | %{$_.Name})
{
foreach ($readDirPathList in
$getDirPathList=get-childitem \\$readSRVlist\$readShareInfoList -recurse
| where {$_.PSIsContainer})# | %{$_.fullname})
{
$getACLList=get-ACL $readDirPathList.fullname | ForEach-Object
{$_.Access}
foreach ($readACLList in $getACLList)
{
$a = $readDirPathList.fullname + "," +
$readACLList.IdentityReference + "," + $readACLList.FileSystemRights
add-content -value $a -path $outputACLInfo
}
}
}
}
感谢您的回复Ansgar。 输出似乎不是我所期望的。也许我没有说清楚。当传递给脚本的路径时,它只会将文件夹的ACL信息提升至前3级。例如,
– user1486134例如,PATH = \\服务器\ sharefolder0传递给脚本,它将得到folder'ACL进行到第3级 \\服务器\ sharefolder0 \ folder00 \\服务器\ sharefolder0 \ FOLDER01 \ folder11 \\ server \ sharefolder1 \ folder00 \ folder01 \\ server \ sharefolder1 \ folder01 \ folder11 \\ server \ sharefolder2 \ folder00 \\ server \ sharefolder2 \ folder01 \ folder11 – user1486134
查看已更新的回答。 –