ForDear于
$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
}
分享名称:ForDear于
转载来源:http://scyanting.com/article/ieegej.html