将成员组属性从AD导入到.csv

时间:2014-08-29 10:57:50

标签: powershell csv active-directory export quest

我在Windows XP下使用ActiveRoles Management Shell,Powershell ver 2用于从AD中检索组数据并将其导出到csv文件。除了获取成员列表之外,所有内容都很好,因此程序在excel单元格中编写每次成员列System.String []。如何让它在那里写整个列表,是否可能?我实际上只有成员的名字不需要整个连接路径。是否有可能从组成员只获得名称?

get-QADGroup -SearchRoot 'ou=User,ou=Groups,ou=PL,dc=test,dc=com'| Select-Object -property name,sAMAccountName,description,groupType,member|Export-Csv -path Y:\csv\groups.csv

2 个答案:

答案 0 :(得分:0)

我无法访问任务cmdlet,因此我将根据activedirectory

中的cmdlet提供解决方案
Get-ADUser -Filter * -SearchBase "OU=Employees,DC=Domain,DC=Local" -Properties memberof |
    Select-Object name,@{Name="Groups";Expression={$_.MemberOf | 
    ForEach-Object{(Get-ADGroup -Identity $_).Name + ";"}}} | 
    Export-Csv C:\temp\TEST.CSV -Append

要理解这一点:

  1. 应该是自我解释的。获取OU中定义的所有用户。您需要根据自己的需要进行更改。
  2. 在您到达calculated property群组之前,选择语句显示正常。
  3. 上一行的内容是循环浏览单个用户为memberof的每个组,并获取该组的友好名称(MemberOf返回DistinguishedName)。在每个组的末尾添加";",以便不会干扰稍后生成的CSV。
  4. 附加到csv文件。
  5. 为简洁起见,我没有包含您在Select-Object语句中包含的所有额外属性。你显然需要在需要适合时添加它们。

    由于您使用了Quest cmdlet,因此您只需将select语句中的member更改为以下内容:

    @{Name="Groups";Expression={$_.member | ForEach-Object{"$_;"}}}
    

    我无法测试这是否有效。它基于成员包含一个简单的名称,假设为distinguishedname

答案 1 :(得分:0)

好的,Matt建议你在Select语句中想要一个表达式。我会用这样的东西:

@{l="Members";e={$_.Members -join ", "}}

当插入你的单行时,看起来像:

get-QADGroup -SearchRoot 'ou=User,ou=Groups,ou=PL,dc=test,dc=com'| Select-Object -property name,sAMAccountName,description,groupType,@{l='Members';e={$_.member -join ", "}}|Export-Csv -path Y:\csv\groups.csv -NoTypeInfo

我还在导出中添加了-NoTypeInfo,以跳过恼人的引导线,告诉你它是PSCustomObject或其他一些,实际上只是获取你的数据(和标题)。