2013-05-06 90 views
2

我有下面的脚本拉动正确的信息,但需要协助格式化它。我在寻找的是一个表,它列出了列A中的组名和列B中的用户名。现在,输出列出了列A中的组名,但将用户名全部放在列B中的一行中。Powershell - 格式化结果到表/数组

这是什么出来:

Col A  Col B 

Group1  {User 1, User 2, User 3} 

这是我希望看到什么:

Col A  Col B 

Group 1 User 1 

      User 2 

      User 3 

这里是脚本我有迄今。

Get-QADGroup -Name '*Group Name*' | ForEach-Object { 

$group = $_ 
$member = $group | Get-QADGroupMember -IncludedProperties samaccountname -UseDefaultExcludedProperties $true -SizeLimit 0 

New-Object -TypeName PSObject -Property @{ 
    Name = $group.Name 
    EID = $member 
    } 
} 
+0

我不认为有另一种方式。 {用户1,用户2,用户3}是正常的格式输出。 每一行都是一个新条目,而group1只有一个条目。这就是为什么它在一条线上的原因 – Solaflex 2013-05-06 15:02:43

回答

1

不是格式你要的,但将逐组成员: (更新包括SAM帐户

Get-QADGroup -Name '*Application*' | ` 
% { $group = $_.Name; $_; } | ` 
Get-QADGroupMember | ` 
Select-Object @{n='Group';e={$group}}, Name, SamAccountName | ` 
Sort-Object Group | ` 
Format-Table Name, SamAccountName -GroupBy Group 

如果你真的需要的格式完全按照要求,一个你可以得到它的方式是订购,然后跟踪以前的组值,如果它是相同的,将其标记为空,如:

Get-QADGroup -Name '*Application*' | ` 
% { $group = $_.Name; $_; } | ` 
Get-QADGroupMember | ` 
Select-Object @{n='Group';e={$group}}, @{n='Member';e={$_.Name}} | ` 
Sort-Object Group | ` 
ForEach-Object { 

$currentGroup = $_.Group 

if ($currentGroup -eq $previousGroup) 
{ 
$_.Group = [string]::Empty 
} 

$previousGroup = $currentGroup 
Write-Output $_ 
} | Format-Table 
+0

顶部的一个漂亮的作品。还有一个问题。我需要sAMAccount名称以实际用户名出现在列表中。我该如何添加该字段? – Darkvette 2013-05-06 17:13:24

+0

想通了。将最后一点格式化为“@ {n ='EID'; e = {$ _。sAMAccountName}} | Sort-Object Group | Format-Table EID,Member -GroupBy Group”。感谢您的帮助。 – Darkvette 2013-05-06 17:34:41

+0

更新的第一个示例包含SamAccountName。 – dugas 2013-05-06 17:44:33