需要以下 AD 脚本的指导

Need guidance with the below AD Script

我在尝试拉出 AD 中每个组的安全选项卡的成员时遇到问题......有人可以帮忙吗?

Get-ADGroup -filter * -Properties name, security | select security, @{n=’Security’; e= { ( $_.Security | % { (Get-ADObject $_).Name }) -join “,” }}

错误如下:

Get-ADGroup : One or more properties are invalid.
Parameter name: security
At line:1 char:1
+ Get-ADGroup -filter * -Properties security | select security, @{n=’Se ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Get-ADGroup], ArgumentException
    + FullyQualifiedErrorId : ActiveDirectoryCmdlet:System.ArgumentException,Microsoft.ActiveDirectory.Management.Commands.GetADGroup

我在这里错过了什么?

您可以将 Get-Acl cmdlet 与 AD 提供程序结合使用。如果您要获取所有组,则必须使用 ActiveDirectory 模块,因此您也应该有可用的提供程序。该提供程序允许您像浏览文件系统一样浏览 Active Directory。因此,首先要做的是切换到该提供商:

cd AD:

然后您就可以像您想要的那样获得您的群组:

$Groups = Get-ADGroup -filter *

现在您可以遍历这些并使用 distinguishedName 获取每个组对象的 ACL。现在,有几种方法可以做到这一点,我将使用 Add-Member。 AD 组对象喜欢尝试创建任何新成员 ADPropertySet,因此我们将使用 -force 参数来确保它是一个 NoteProperty。

$Groups | ForEach-Object{
    $ACLs = Get-Acl -Path $_.distinguishedName
    Add-Member -InputObject $_ -NotePropertyName 'Security' -NotePropertyValue $ACL.Access -Force
}

然后你可以做一些像$Groups|Format-Table Name,Security之类的事情。