2013-05-06 91 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