2012-01-18 119 views
1

我想找到一种方式(VB脚本或PowerShell最好)生成报告,显示域上的所有用户帐户,并显示其组他们是会员。如何显示所有域用户及其组成员(活动目录)

我想这是导出到Excel电子表格的格式如下:

USERNAME1 |组1,组2,组3,组4,组5等。
Username2 |组别1,组2,组3,组4,组5等

我已经在Quest PowerShell命令玩弄为AD和用下列想出:

get-qaduser * -sizelimit 0 | select Name,MemberOf | export-csv report.csv 

然而,这将显示在输出文件为:

Username1 | System.String[] 
Username2 | System.String[] 
Username3 | System.String[] 

其中System.String[]应该是组名。

我该怎么办?

回答

6

试试这个,你需要加入的组名称:

$memberOf = @{n='MemberOf';e={ ($_.MemberOf -replace '^CN=([^,]+).+$','$1') -join ';' }} 

Get-QADUser -SizeLimit 0 | ` 
Select-Object Name,DN,SamAccountName,$memberOf | ` 
Export-Csv report.csv 
+0

呜呜,好棒! +1 – JPBlanc 2012-01-18 13:13:12

+0

非常感谢谢伊。作品是一种绝对的享受,然后我可以用分号取消限制,并将它们放入单独的列中。有没有反转脚本的方法,以便显示这些组的组和成员,如下所示: Group1 | User1,User2,User 3等。 等? – Matt 2012-01-18 13:37:11

+0

是的,试试这个:Get-QADGroup -sl 0 |选择Name,DN,@ {n ='Members'; e = {($ _ | Get-QADGroupmember | select -expand name)-join';' }} – 2012-01-18 15:49:02

0

成才这样的脚本(未测试):

$users = get-qaduser * -sizelimit 0 

$a = @() 

foreach ($user in $users) 
{ $al = New-Object System.Object 

$al | Add-member -type Noteproperty -name Accountame $user.samaccountname 
$al | add-member -type Noteproperty -name Groups $user.memberof 

$a += $al 

} 

$a | export-csv report.csv 
+0

谢谢基督教,但是这也会返回“System.String []”,以代替应显示组的位置。我相信谢伊提供了一个有用的脚本,非常感谢您的时间。 – Matt 2012-01-18 13:42:59

0

你可以尝试

get-qaduser * -sizelimit 0 | select -Property @{N="my";E={$_.name}}, -ExpandProperty MemberOf | export-csv report.csv 
+0

尝试此操作并收到:Select-Object:找不到接受参数'MemberOf'的位置参数。在线:1个字符:36。感谢您的帮助,但我相信Shay已经提供了一种做法:-) – Matt 2012-01-18 13:40:33

相关问题