2016-06-07 61 views
0

我試圖使用PowerShell通過共享郵箱並獲取具有某些訪問權限的用戶。我可以做到這一點,但問題是當一個郵箱有多個用戶的訪問權限。在同一行上返回同一變量的多個結果

我將使用代碼只是一個郵箱,而不是每一個這樣的郵箱。我正在使用的代碼如下:

Get-MailboxPermission -Identity [email protected] | select Identity, User | 
    where user -like '*@*' 

我得到這個結果:

Output

但我希望得到的東西是這樣的:

Desired_Output

有沒有辦法讓具有相同標識的用戶在同一行上?

回答

0

您可以通過郵箱使用Group-Object對用戶進行分組,然後展開組,calculated properties

... | Group-Object Identity | 
    Select-Object @{n='Identity';e={$_.Name}}, 
        @{n='User';e={$_.Group.User -join ', '}} 

Group-Object組的結果對象由他們Identity財產,具有相同的標識值,即所有對象在一個被收集GroupInfo對象(在其Group屬性中是精確的)。帶有計算屬性的Select-Object語句然後爲每個組創建一個新的自定義對象。 User計算屬性擴展了分組對象的User屬性,並將名稱連接到逗號分隔列表。

請注意,您需要PowerShell v3或更高版本才能使用$_.Group.User -join ', '。在早期版本中,您需要用類似

($_.Group | Select-Object -Expand User) -join ', ' 
+0

替換它謝謝!我不完全理解這一切,但它的工作原理! –

+0

@LukeK增加了一些解釋(請看看我參考的文檔)。另外,如果您發現它解決了您的問題,請考慮[接受答案](http://meta.stackoverflow.com/a/5235)。 –

+0

會做。另外還有一個問題。如果郵箱沒有任何完全訪問用戶,我希望它返回空白。它目前不打印任何內容,只是跳過該郵箱。有沒有辦法讓用戶列中的任何內容都不顯示身份? –

相關問題