通过Powershell进行NTFS报告
我想报告用户对文件夹对象(而不是文件)的权限。我正试图使用get-acl powershell cmdlet来实现这一点,但是我遇到了一个问题,我注意到我的代码没有正确地获取所有权限。我还可以在检查用户权限时将其降低一个级别,并希望在用户权限可能会更改一个文件夹时获得异常通过Powershell进行NTFS报告,powershell,scripting,ntfs,Powershell,Scripting,Ntfs,我想报告用户对文件夹对象(而不是文件)的权限。我正试图使用get-acl powershell cmdlet来实现这一点,但是我遇到了一个问题,我注意到我的代码没有正确地获取所有权限。我还可以在检查用户权限时将其降低一个级别,并希望在用户权限可能会更改一个文件夹时获得异常 if ($ComputerName -eq '.'){ $Path = $Folder } else { $Path = "\\$ComputerName\$Folder" }ls if ($OutputFile){ gc
if ($ComputerName -eq '.'){
$Path = $Folder
}
else {
$Path = "\\$ComputerName\$Folder"
}ls
if ($OutputFile){
gci c:\|%{if($_.PSIsContainer){GCI $_.FullName|get-acl};$_|get-acl}| Select-Object @{Name="Path";Expression={$_.PSPath.Substring($_.PSPath.IndexOf(":")+2) }},@{Name="Type";Expression={$_.GetType()}},Owner -ExpandProperty Access | sort PSParentPath|Export-CSV $OutputFile -NoType
}
else{
gci c:\|%{if($_.PSIsContainer){GCI $_.FullName|get-acl};$_|get-acl}| Select-Object @{Name="Path";Expression={$_.PSPath.Substring($_.PSPath.IndexOf(":")+2) }},@{Name="Type";Expression={$_.GetType()}},Owner -ExpandProperty Access | sort PSParentPath|FT -Auto
}
随机文件夹报告数字,而不是给我文件系统权限。我的代码有问题吗?您的脚本没有问题 请看一下这个以获得解释 简言之: 内置\管理员允许完全控制 内置\管理员允许268435456
你应该可以把它们过滤掉,我和这里的ManyRootsofAllEvil不一样。。。你不想把它们过滤掉。数值结果是由于ACE中应用了特定的权限,而不是读、写或完全控制等分组权限。请阅读所有详细信息,但该数字代表所有指定权利的最高点。例如,通用读访问组显示如下: 指定以只读方式打开和复制文件夹或文件的权限。 此权限包括ReadData权限、ReadExtendedAttributes权限、, ReadAttributes权限和ReadPermissions权限 是的,如果有人拥有完全的控制权,那么深入到特定的权限可能并不重要,但可能很重要,因为这些权限可能会传播到子文件夹和文件 因此,如果有人具有读取权限,您将看到读取。如果某人只有ReadData、ReadExtendedAttributes和ReadAttributes(但没有ReadPermissions),则会产生数字响应 按位标志的工作原理是(仅示例,而非实际值!): 0-无 1-读取数据 2-再版赠品 5-读取属性 9-读取权限 你知道他们有什么,加上与之相关的数字,这就是按位响应。因此,如果他们有ReadData(1)和ReadPermissions(9),则响应为10(1+9)。如果它们有ReadData(1)、ReadExtendedAttributes(2)和ReadAttributes(5),则得到8(1+2+5)。数字很快就会变大,因为任何单个项目都不能将以前的项目组合在一起,这样,任何数量的项目组合在一起都会创建一个唯一的数字 您最终要做的是查看继承和传播类型,以了解它们在异常方面的差异