将AD组,用户名和全名导出到csv

时间:2016-12-01 05:29:05

标签: powershell csv

我试图从AD中检索所有组,用户ID和名称并将其导出为CSV文件,其中包含三列,一列用于ParentGroupNames,然后是DisplayName,然后是memberName。以下作品接受DisplayName,它似乎为所有组重复一个名称。

function getGroups{

    $Groups += Get-ADGroup -Filter * -SearchBase    "ou=Groups,ou=DCM,ou=NTG,dc=prod,dc=main,dc=ntgov" | Select-Object -ExpandProperty samaccountname
    return $Groups
}

 $Groups = getGroups
  write-host "Groups:" $Groups.Count 

  $date = $(get-date).ToString("dd MMM yyyy")
   $global:FileName = "Active Directory Group Membership - DCM -" + $date

   $results = @();

   foreach ($GroupName in $Groups){
    Get-ADGroupMember -Identity $GroupName | Sort-Object $_.SamAccountName |           


   ForEach-Object {
        $ItemProperties = @{
            "ParentGroupName" = (Get-ADGroup -Identity        $GroupName).SamAccountName;
            "MemberName" = $_.SamAccountName
        }

        if ($_.ObjectClass -eq 'group') {
            $ItemProperties.Add("DisplayName","-");
        } elseif ($_.ObjectClass -eq 'user') {
            $ItemProperties.Add("DisplayName",(Get-ADUser -Identity  $MemberName -Properties DisplayName).DisplayName);
        }

        $MyItem = New-Object -TypeName psobject -property $ItemProperties;
        $Results += $MyItem;
        $ItemProperties = $null;
    }
} 
$results | export-csv -path "C:

1 个答案:

答案 0 :(得分:0)

您的代码出现错误,将 $ MemberName 更改为 $ ItemProperties.MemberName 此处的固定代码:

function getGroups{

    $Groups += Get-ADGroup -Filter * -SearchBase    "ou=Groups,ou=DCM,ou=NTG,dc=prod,dc=main,dc=ntgov" | Select-Object -ExpandProperty samaccountname
    return $Groups
}

 $Groups = getGroups
  write-host "Groups:" $Groups.Count 

  $date = $(get-date).ToString("dd MMM yyyy")
   $global:FileName = "Active Directory Group Membership - DCM -" + $date

   $results = @();

   foreach ($GroupName in $Groups){
    Get-ADGroupMember -Identity $GroupName | Sort-Object $_.SamAccountName |           


   ForEach-Object {
        $ItemProperties = @{
            "ParentGroupName" = (Get-ADGroup -Identity        $GroupName).SamAccountName;
            "MemberName" = $_.SamAccountName
        }

        if ($_.ObjectClass -eq 'group') {
            $ItemProperties.Add("DisplayName","-");
        } elseif ($_.ObjectClass -eq 'user') {
            $ItemProperties.Add("DisplayName",(Get-ADUser -Identity  $ItemProperties.MemberName -Properties DisplayName).DisplayName);
        }

        $MyItem = New-Object -TypeName psobject -property $ItemProperties;
        $Results += $MyItem;
        $ItemProperties = $null;
    }
} 
$results | export-csv -path "C:\1"