获取文件夹的用户权限,包括通过AD和本地组的间接权限

时间:2018-07-30 15:01:24

标签: powershell active-directory acl

我想检查给定的Active Directory用户(由用户名和域指定)是否对给定文件夹具有读/(写)权限。这与直接通过用户名或某些组成员身份间接授予它们无关。但是到目前为止,我已经像5个小时一样在Google上搜寻,但无济于事。

我了解到,Get-Acl Cmdlet用于读取文件夹权限。该用户很可能是某个组的成员,该组间接为其授予了权限。

所以我的想法是只匹配

的输出
(Get-Acl <Folder>).Access | ft

针对用户的组成员身份。

我使用命令收集组信息

Get-ADPrincipalGroupMembership "<Username>" | select name

,但发现这具有一组完全不同的组名。我假设Get-Acl输出的组是本地组,而其他组是AD方面的组。

我找到了命令whoami /groups,该命令可以打印所有组,但仅用于当前登录的用户。

经过一些额外的时间后,我找出了该命令(基于.NET):

(New-Object Security.Principal.WindowsIdentity -ArgumentList @(,"<User@fullDomain.com>")).Claims | select Value

这只是打印SID,而

(Get-Acl <Folder>).Access | ft

显示一些人性化的输出,例如“ NT SERVICE \ TrustedInstaller”等。

我相信我已经很接近了,但是我无法使其正常工作。 另一个要注意的是:这真的必须那么复杂吗?

我发现其他解决方案仅基于直接用户权限起作用,而不检查组权限。

哦,有一件事:一切都必须在Windows Server 2012 R2的PowerShell 4.0上运行,并且PowerShell脚本将在本地运行。不允许使用NuGet软件包或任何需要Internet连接的软件包。

0 个答案:

没有答案