我是这个网站的新手,对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,请告诉我。任何可以提供的帮助将不胜感激。提前谢谢!
答案 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实际可以执行的操作。