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 }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章