2017-09-27 61 views
1

我的目標是拉取三個獨立AD組的組成員,並且僅在將數組中的字段重命名爲組本身的名稱時才拉出$ _。name。最後,我想要Out-GridView,這樣一些用戶可以看到誰在哪個組中。使用foreach循環中的變量重命名屬性

下面是我在目前的和由於某種原因它的工作原理,但只能通過變量的第一個條目。

$groups = "explore","user", "dist" 
$report = foreach ($group in $groups) 
{Get-ADGroupMember $group | Select @{Name="$group";Expression= 
{$_.name}}} 
$report | Out-GridView 

這是爲什麼停在第一個條目?我在這裏錯過了什麼?我也嘗試將$ report作爲$ report = @(),然後在循環中放入$ report + =。都沒有工作。我覺得我失去了一些非常愚蠢的東西。任何幫助表示讚賞。

再次在最後,我很喜歡gridview彈出顯示三列,每個列與組名和下面的成員。謝謝你的幫助!

實施例所需的輸出:

explore  user  dist 
user1  user4  user6 
user2  user3  user7 
user4  user7 

我可以通過只拉動組成員,選擇的名稱,然後將其傾倒到名稱/表達陣列與一組這樣做。

它爲所有三個在一個out-gridview這是證明是困難的。

+0

有趣的是,它似乎只顯示具有相同屬性的第一組對象。編寫'$ report'到控制檯表現出類似的行爲,我看到一堆具有相同'explore'屬性的對象,然後是一堆代表其他對象的空行。另一方面'$ report | Format-List *'將打印所有對象。 –

+0

當我運行它時,我得到的只是其中一個條目的輸出,它似乎是變量,它是那些條目之一。我很困惑。 – J235711

回答

0

你可以試試這個。

$groups = "explore","user", "dist" 
$report = foreach($group in $groups) { 
    Get-ADGroupMember $group | % { 
     New-Object -TypeName psobject -Property (@{'Group'=$group; 'User'=$_.name}) 
    } 
} 

$report | Out-GridView 

如果需要添加更多的列,只需將它們添加到對象的屬性。


編輯

我不認爲你需要做的是在一個可讀的方式是可行的。 gridview被設計爲以與CSV或SQL數據庫表格相同的形式顯示數據。您有表示對象屬性的列和表示單個對象的行。以所需的形式顯示數據的唯一方法是在一列有數據而另一列空白的情況下存在差距。

此代碼儘可能接近你想要的,但它不會在網格視圖中正確顯示。

$groups = "explore","user", "dist" 
$report = New-Object -TypeName psobject 

$groups | % { 
    $report | Add-Member -MemberType NoteProperty -Name $_ -Value @() 
} 

foreach($group in $groups) { 
    Get-ADGroupMember $group | % { 
     $report.($group) += $_.Name 
    } 
} 

$report 
+0

這很接近,但我希望有三列,每列都帶有組名的標題,而不是帶有組的列。 – J235711

+0

@ J235711你能提供你正在尋找的輸出嗎? –

+0

@AlexSarafian我想我正在尋找的東西,我意識到很難產生,就像我添加到原始信息中的東西。 有些東西可以通過頂部點擊進行排序,每個列名都代表有成員拉的組。 – J235711