PowerShell 脚本显示 AD 中一个 OU 内的所有用户部分的 AD 安全组

PowerShell Script to display all users part of AD security groups within an OU in AD

我是 PowerShell 的新手,我正在尝试显示某个 OU 中的所有 AD 安全组并显示该安全组的每个用户部分。

我想将用户名和名称以及安全组名称显示到 CSV 文件中。

我已设法获取此信息,但我必须在脚本本身中手动添加 AD 安全组名称:

$groups = "GroupName1", "GroupName2", "GroupName3", "GroupName4", "GroupName5"

$results = foreach ($group in $groups) {
    Get-ADGroupMember $group | select samaccountname, name, @{n='GroupName';e={$group}}, @{n='Description';e={(Get-ADGroup $group -Properties description).description}}
}

$results

$results | Export-csv C:\Users\Sam\Desktop\Users.csv -NoTypeInformation 

上面的脚本输出了我需要的信息,但如上所述,我必须在脚本本身中手动输入安全组名。

我想我需要使用的命令是Get-ADGroup

感谢任何帮助。

尝试这样的事情(当然要为 OU 添加正确的 dn):

$Groups = Get-AdGroup -SearchBase "ou=OuName,DC=contoso,DC=local" -Filter * | Select -ExpandProperty Name

或者根据我的说法更短更容易阅读:

$Groups = (Get-AdGroup -SearchBase "ou=OuName,DC=contoso,DC=local" -Filter *).Name

未经测试的代码,但您明白了它的要点。

您可以使用 Get-ADGroup -Filter * -SearchBase 'OUdnHere' 搜索所需组织单位下的所有组,然后您可以简单地应用您已有的相同逻辑:

  1. 遍历组
  2. 获取他们的会员资格
  3. 构造输出
  4. 导出为 CSV
$ou = 'distinguished name of my OU here'
Get-ADGroup -Filter * -SearchBase $ou -Properties Description | ForEach-Object {
    foreach($member in Get-ADGroupMember $_) {
        [pscustomobject]@{
            SamAccountName = $member.SamAccountName
            Name           = $member.Name
            GroupName      = $_.Name
            Description    = $_.Description
        }
    }
} | Export-csv C:\Users\Sam\Desktop\Users.csv -NoTypeInformation