千家信息网

For Dear 于

发表于:2025-02-22 作者:千家信息网编辑
千家信息网最后更新 2025年02月22日,$a="C:\temp" #Root Folder$L=0 #how many layers of subfolders you want to look into, 0 means only roo
千家信息网最后更新 2025年02月22日For Dear 于
$a="C:\temp" #Root Folder$L=0 #how many layers of subfolders you want to look into, 0 means only root folder. $p=@()If ($L -gt 0)  #this loop is for being compatible to PS 2.0, in 3.0 above this are -Depth -Directory for Get-ChildItem to support.{    For ($i=0;$i -lt $L;$i++)    {        $s="\*"        $a=$a+$s        $p=$p+$a    }    $b=Get-ChildItem $p | ?{ $_.PSIsContainer } | select -ExpandProperty FullName    $b=$b+$a}Else{    $p=$p+$a    $b=Get-Item $p | ?{ $_.PSIsContainer } | select -ExpandProperty FullName}$b | % {    $c=$_    $UserName=$null    (Get-Acl $_).Access | % {        If ($_.IdentityReference -ilike "S-1-5-*")        {            $UserName=SID2Name($_.IdentityReference)        }        Else        {            $UserName=$_.IdentityReference        }        New-Object -TypeName PSobject -Property @{            Path=$c            IdentityReference=$UserName            FileSystemRights=$_.FileSystemRights            AccessControlType=$_.AccessControlType        }    }} | Export-Csv ".\ACL.csv" -NoTypeInformation -Encoding UTF8& ".\ACL.csv"Function SID2Name ($SID){    $objSID = New-Object System.Security.Principal.SecurityIdentifier($SID)    Try    {        $objUser = $objSID.Translate([System.Security.Principal.NTAccount])     }    Catch    {        Return $SID    }    Return $objUser.Value}
0