首页 > 解决方案 > 访问权和所有权 Powershell

问题描述

关于如何在以下脚本中添加所有者信息的任何想法?

Get-ChildItem "C:\DFSRoots\DFS\Folder_Redirection" -Recurse | ?{
   $_.PsIsContainer } | %{ $Path = $_.FullName
   # Include inherited rights from the report 
   (Get-Acl $Path).Access | Select-Object `
   @{n='Path';e={ $Path }}, IdentityReference, AccessControlType, `
   InheritanceFlags, PropagationFlags, FileSystemRights } | Export-CSV "C:\exported\Permissions4.csv"

标签: powershell

解决方案


所有者不是AccessGet-Acl 返回的属性的属性,因此您需要在深入访问 Access 属性之前捕获它。

$dfsPath = "C:\DFSRoots\DFS\Folder_Redirection"
$report  = "C:\exported\Permissions4.csv"

$result = Get-ChildItem $dfsPath -Recurse -Directory| ForEach-Object { 
    $folderPath = $_.FullName
    $acl        = Get-Acl -Path $folderPath
    $owner      = $acl.Owner
    $ownerSid   = $acl.Sddl -replace 'O:([S\-\d]+).+','$1'
    $acl.Access | 
    Select-Object @{Name = 'Path'; Expression = { $folderPath }}, *, 
                  @{Name = 'Owner'; Expression = { $owner}},
                  @{Name = 'OwnerSid'; Expression = { $ownerSid}}
}  

# output on console
$result

#output to CSV file
$result | Export-CSV $reportPath -NoTypeInformation

作为奖励,上面还检索了所有者 SID

希望有帮助


推荐阅读