导出组和成员SamAccountName或DisplayName为CSV

时间:2017-01-05 13:12:01

标签: powershell csv active-directory

我在从我创建的CSV导入组和成员资格数据时遇到了一些问题,原因是我正在导出导出成员的CN名称而不是SamAccountName或{ {1}}导入需要。

目前我导出的CSV如下所示:

"name","Members"
"GROUP1","CN=LEEROY JENKINS,OU=ADMINISTRATORS,OU=USERS,OU=DOMAIN,DC=DOMAIN,DC=LOCAL;CN=MICHAEL JACKSON,OU=ADMINISTRATORS,OU=USERS,OU=DOMAIN,DC=DOMAIN,DC=LOCAL;CN=JERRY SPRINGER,OU=GUESTS,OU=USERS,OU=DOMAIN,DC=DOMAIN,DC=LOCAL" 
"GROUP2","CN=KIMMY SHMIDT,OU=ADMINISTRATORS,OU=USERS,OU=DOMAIN,DC=DOMAIN,DC=LOCAL;CN=MICHAEL JACKSON,OU=ADMINISTRATORS,OU=USERS,OU=DOMAIN,DC=DOMAIN,DC=LOCAL;CN=JERRY SPRINGER,OU=GUESTS,OU=USERS,OU=DOMAIN,DC=DOMAIN,DC=LOCAL"

我从执行中获得了:

DisplayName

我认为我有两个问题,一个是导入不会将CN作为有效的成员名称,也不确定它是否适用于每个拥有多个用户的组。

在旁注 - 我发现this article。然而,类似的问题,我还没有得到格式良好的'Group1 - Name1'表格。我基本上试图找出一种自动方式来创建一个包含可以导入Active Directory的组名和成员资格详细信息的表。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,对我而言,这是因为群组有多个成员,而PowerShell并没有很好地处理1:M关系。我开始使用它来拉动小组成员:

(Get-ADGroupMember -Identity GroupName -Recursive | select name | Out-String).Trim()

因为这会将所有小组成员放入一个小区。请注意,Excel对单个单元格中的字符数有一个大小限制,因此如果您有一个包含数千个成员的组,则会对您造成错误。我确信有更好的方法,这对我有用。

您可以将当前脚本输入其中,即:

编辑以更贴近您的需求:

$Groups = Get-ADGroup -Filter {YOURFILTER} | select -ExpandProperty sAmAccountname
foreach($Group in $Groups)
{
$Members = (Get-ADGroupMember -Identity $Group | select sAmAccountName | out-string).Trim() 

New-Object -TypeName PSCustomObject -Property @{
Users = $Members
Name = $Group
} | Export-Csv C:\Export.csv
}

只需确保垂直展开单元格以实际查看组成员。

相关问题