广告组和广告用户

ADGroups AND ADusers

我需要将以下内容放入 CSV 文件中:

具有以下字段的组: 组名称、组 SID、组电子邮件地址、组类型

然后对于上述每个组,我需要具有以下字段的成员用户:组名(我知道这是重复)、用户 ID、用户名字、用户姓氏、用户电子邮件。

如果有人对此有解决方案,我将永远感激不已。解决方案将是我可以学习和学习的东西,再次感谢。

我分别有两件,但卡在了那一点

Get-ADGroup -Filter * -Properties Member |
    select Name, DistinguishedName, sid, GroupCategory, GroupScope,
        @{Name="Members";Expression={($_.Members | Measure-Object).Count}} |
    Out-GridView
    #Export-Csv c:\rmm-mgmt\test.csv

我不明白为什么不能只添加用户详细信息。 对于我正在使用的用户:

Get-ADUser -Filter * -Properties * |
    Select-Object name, surname, givenname, displayname, emailaddress |
    Out-GridView

(在我开始导出之前使用 Out-GridView 检查结果)

如您所见,这是两条我能得到但无法将它们放在一起的信息。一个例子是我无法获取组中的成员列表。

您必须使用 ForEach-Object 并将组分配给命名变量,以便您可以在格式化每个成员的地方访问它。然后通过管道 $_.Member 进入 Get-ADUser:

Get-ADGroup -Filter * -Properties Member | ForEach-Object {
    $group = $_
    $_.Member | Get-ADUser -Properties Surname,GivenName,DisplayName,EmailAddress |
        Select @{N = "Group Name";E = {$group.Name}}, Surname, GivenName, DisplayName, EmailAddress
} | Out-GridView

我不太清楚您正在寻找的确切输出格式,但我相信这样的东西应该适用于您尝试做的事情。

# Create an empty array we will add our custom objects to.
$outputObjs = @()

# Get all the AD groups.
$groups = Get-ADGroup -Filter * -Properties Member | 
            select Name, DistinguishedName, sid, GroupCategory, GroupScope |
            select -First 40

# Iterate the groups capturing the members of each group.
foreach ($group in $groups) {
    $groupMembers = Get-ADGroupMember -Identity $group.Name |
                        ? { $_.objectClass -eq "user" } | 
                        % { Get-ADUser $_.SamAccountName } | 
                        select name, surname, givenname, displayname, emailaddress

    # Get the group member count
    $memCount = 0
    if ($groupMembers) { $memCount = $groupMembers.Count; } 
    else { $memCount = 0 }

    # Iterate through the group members creating a custom object and adding it to our object array.
    foreach($member in $groupMembers) {
        $outputObjs += New-Object -TypeName psobject -Property (@{
            'Group Name' = $group.Name;
            'Group DN' = $group.DistinguishedName;
            'Group SID' = $group.SID;
            'Group Category' = $group.GroupCategory;
            'Group Scope' = $group.GroupScope;
            'Group Member Count' = $memCount
            'User Name' = $member.name;
            'User Surname' = $member.surname;
            'User Given Name' = $member.givenname;
            'User Display Name' = $member.displayname;
            'User Email Address' = $member.emailaddress
        })
    }
}

# Convert the object array to a CSV.
$outputObjs | ConvertTo-Csv -NoTypeInformation

你的 CSV 应该是这样的

"Group Name","User Surname","User Given Name","Group Member Count","User Email Address","Group SID","User Name","Group Category","Group DN","User Display Name","Group Scope"