有些时候您需要重新创建一个嵌套的文件夹结构,并且希望克隆 NTFS 权限。今天我们我们专注第一个步骤:记录一个已有的文件夹结构,包括 SDDL 格式的 NTFS 权限。
我们可以用 Get-FolderStructureWithPermission
函数实现这个任务。它输入一个已存在文件夹的路径,并返回所有子文件夹,包括 SDDL 格式的 NTFS 权限:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| function Get-FolderStructureWithPermission { param ( [String] [Parameter(Mandatory)] $Path )
if ((Test-Path -Path $Path -PathType Container) -eq $false) { throw "$Path does not exist or is no directory!" }
Get-ChildItem -Path $Path -Recurse -Directory | ForEach-Object { $sd = Get-Acl -Path $_.FullName $sddl = $sd.GetSecurityDescriptorSddlForm('all')
[PSCustomObject]@{ Path = $_.FullName.Substring($Path.Length) SDDL = $sddl }
} }
|
您可以将结果通过管道输出到 Out-GridView
,或将它保存到一个变量,或用 Export-Csv
将它写到磁盘中。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| PS C:\> Get-FolderStructureWithPermission -Path $home | Format-List
Path : \.dnx SDDL : O:S-1-5-21-2012478179-265285931-690539891-1001G:S-1-5-21-2012478179-265285931-690539891-1001D:(A;OICIID;FA;;;SY)(A;OI CIID;FA;;;BA)(A;OICIID;FA;;;S-1-5-21-2012478179-265285931-690539891-1001)
Path : \.plaster SDDL : O:S-1-5-21-2012478179-265285931-690539891-1001G:S-1-5-21-2012478179-265285931-690539891-1001D:(A;OICIID;FA;;;SY)(A;OI CIID;FA;;;BA)(A;OICIID;FA;;;S-1-5-21-2012478179-265285931-690539891-1001)
Path : \.vscode SDDL : O:S-1-5-21-2012478179-265285931-690539891-1001G:S-1-5-21-2012478179-265285931-690539891-1001D:(A;OICIID;FA;;;SY)(A;OI CIID;FA;;;BA)(A;OICIID;FA;;;S-1-5-21-2012478179-265285931-690539891-1001)
Path : \.vscode-insiders SDDL : O:S-1-5-21-2012478179-265285931-690539891-1001G:S-1-5-21-2012478179-265285931-690539891-1001D:(A;OICIID;FA;;;SY)(A;OI CIID;FA;;;BA)(A;OICIID;FA;;;S-1-5-21-2012478179-265285931-690539891-1001)
Path : \3D Objects SDDL : O:S-1-5-21-2012478179-265285931-690539891-1001G:S-1-5-21-2012478179-265285931-690539891-1001D:(A;OICIID;FA;;;SY)(A;OI CIID;FA;;;BA)(A;OICIID;FA;;;S-1-5-21-2012478179-265285931-690539891-1001)
...
|
免责声明:这里呈现的所有代码仅供学习使用。由于我们没有投入大量精力去测试它,所以没有任何保障,而且它并不是生产准备就绪的代码。您有责任对这段代码进行测试,并决定它是否完美符合您的需要。