希望将群组成员资格与网络共享进行比较

时间:2016-12-06 03:47:30

标签: powershell permissions active-directory directory

我是这个网站的新手,对PowerShell来说相当新。到目前为止,我很喜欢这两个!

我目前正在尝试整理一个PowerShell脚本,该脚本将查看某个共享或文件夹的所有子文件夹中的所有ACL,然后将这些ACL与用户组成员身份进行比较。所以,让我们说汤姆说"我希望杰里拥有与我相同的访问权限,但仅限于构建共享及其所有子文件夹,不包含在CONSTRUCTION文件夹之外的其他区域。我希望看到Tom所属的所有组都驻留在CONSTRUCTION文件夹的子组件中,这样我就可以将Jerry添加到那些组中。

到目前为止,我有一些我认为需要的部分,但我不太确定如何将它们拼凑起来给我所需要的东西:

Get-Acl -Path "\\\share\construction" | Format-List会给我一个ACL列表,但仅限于此文件夹

get-childitem -Path \\\share\construction -dir -Recurse | format-list -Property name将为我提供CONSTRUCTION

中所有子文件夹的列表

Get-ADPrincipalGroupMembership Tom将为我提供Tom是

成员的所有群组的列表

现在对于困难的部分,这是将它们串起来所以我可以说"好的,这些是我需要添加Jerry的组,以便让他的访问权限与Tom&#39相同; s仅在CONSTRUCTION文件夹及其子文件夹中(因为某些子文件夹可能与父文件夹不同,我希望他也添加到父文件夹中)。

正如我所说的,我是PowerShell的新手,所以如果我不喜欢这些cmndlet,请告诉我。任何可以提供的帮助将不胜感激。提前谢谢!

1 个答案:

答案 0 :(得分:0)

欢迎来到社区!开始使用PowerShell非常有趣!

你有正确的想法肯定从这三行开始。我不想只提供一个完整的脚本来运行你想要的东西。而是继续鼓励你沿着正确的方向前进。

要实现您想要的目标,您需要:
Tom的团体会员
地点组
<<>将Toms Groups与位置进行比较
将Jerry添加到这个缺失的组

幸运的是,PowerShell可以做到这一切。

第1步:检索群组成员资格

$TomsMembership = Get-ADPrincipalGroupMembership Tom | Select-Object -ExpandProperty Name

第2步:检索文件夹的访问组

$LocationACL = (Get-Acl -Path \\share\construction).Access | Select-Object -ExpandProperty IdentityReference

第3步:将用户组与位置组进行比较

$AccessGroups = Compare-Object -ReferenceObject $LocationACL -DifferenceObject $TomsMembership -IncludeEqual -ExcludeDifference

步骤4:输出组用户使用

获取对文件夹的访问权限
Write-Host $AccessGroups.InputObject

既然你已经拥有了上面的主要组件,那么将脚本放在一起就可以很容易地完成你需要的工作!

如果您对上述内容有任何疑问,请与我们联系。

有用的提示
Get-Help是您最好的朋友,使用Get-Help使用cmdlet可以让您深入了解cmdlet实际可以执行的操作。