web-dev-qa-db-ja.com

PowerShell:Exchange配布グループのメモを取得する

特定の配布グループのメモを取得し、配布グループの名前やその他の情報と一緒に出力するワンライナーを作成したいと思います。

私はそれをグーグルで検索し、すべて同じソリューションで異なるソースを見つけました。これは私が見つけた解決策の1つです:

https://richgski.blogspot.com/2012/03/powershell-get-exchange-distribution.html

Get-DistributionGroup Head-of-Operations | Select-Object Name, GroupType, ManagedBy, @{Name="Notes";Expression={(Get-Group $_).Notes}}

ただし、メモのある行は常に空白のままであり、理由はわかりません。

Name        GroupType ManagedBy Notes
----        --------- --------- -----
Head-of-Ops Universal {}

次のコマンドを個別に実行すると、次のようになります。

Get-Group Head-of-Ops | Select-Object Notes

...それは私に出力として正しいメモを与えています:

Notes
-----
Owner- Paul J.

少し後で、正しいパラメーターがあるかどうかを確認したので、次のようにしようとしました。

$Result = Get-DistributionGroup Head-of-Operations
Get-Group $Result.Name | Select-Object Notes

機能した。出力:

Notes
-----
Owner- Paul J.

コマンドにいくつか変更を加えましたが、この方法で試しても機能しません。

Get-DistributionGroup Head-of-Operations | Select-Object Name,GroupType,ManagedBy,@{Name="Notes";Expression={(Get-Group $_.Name | Select-Object Notes)}}

出力:

Name        GroupType ManagedBy Notes
----        --------- --------- -----
Head-of-Ops Universal {}

その後、このトピックへの別の投稿をここで見つけました: https://www.oxfordsbsguy.com/2014/04/21/exchange-powershell-how-to-enumerate-distribution-lists-managers-and-メンバー/#comment-4452

そこで、もう一度コマンドに変更を加えました...

Get-DistributionGroup Head-of-Ops | Select-Object Name,GroupType,ManagedBy,@{Expression={(Get-Group $_.Name).Notes};Label="Notes"}

...それでも、何も変わっていません。出力:

Name        GroupType ManagedBy Notes
----        --------- --------- -----
Head-of-Ops Universal {}

わからない:/

あなたたちの誰かが問題を見て、私にそれを指摘することができますか?

敬具、

ケビン・ヴァン・ティエル

追伸:このコマンドを-verboseパラメーターを指定して実行しましたが、ソリューションに一歩近づいたと思います。ある時点でパラメータが欠落しているだけだと思いますが、どれかわかりません。これがコードです:(機密情報に*アスタリスクを付けました)

Get-DistributionGroup Head-of-Ops@h***.com -Verbose | Select-Object Name,GroupType,ManagedBy,@{Name="Notes";Expression={(Get-Group $_.Name).Notes}} -Verbose
VERBOSE: [16:04:28.885 GMT] Get-DistributionGroup : Active Directory session settings for 'Get-DistributionGroup' are: View Entire Forest: 'False', Default Scope: 'h***.de', Configuration Domain Controller: 'H***.h***.de',
Preferred Global Catalog: '***.h***.h***.de', Preferred Domain Controllers: '{ ****.h***.h***.de, H***.h***.de }'
VERBOSE: [16:04:28.916 GMT] Get-DistributionGroup : Runspace context: Executing user: h***.de/Companies/H***/D***/User/IT Service/****, Executing user organization: , Current organization: , RBAC-enabled: Enabled.
VERBOSE: [16:04:28.916 GMT] Get-DistributionGroup : Beginning processing &
VERBOSE: [16:04:28.932 GMT] Get-DistributionGroup : Current ScopeSet is: { Recipient Read Scope: {{, }}, Recipient Write Scopes: {{, }}, Configuration Read Scope: {{, }}, Configuration Write Scope(s): {{, }, }, Exclusive Recipient
Scope(s): {}, Exclusive Configuration Scope(s): {} }
VERBOSE: [16:04:28.932 GMT] Get-DistributionGroup : Resolved current organization: .
VERBOSE: [16:04:28.932 GMT] Get-DistributionGroup : Searching objects "Head-of-Ops@h***.com" of type "ADGroup" under the root "$null".
VERBOSE: [16:04:28.932 GMT] Get-DistributionGroup : Previous operation run on domain controller 'H***.h***.de'.
VERBOSE: [16:04:28.932 GMT] Get-DistributionGroup : Previous operation run on domain controller 'H***.h***.de'.
VERBOSE: [16:04:28.932 GMT] Get-DistributionGroup : Preparing to output objects. The maximum size of the result set is "1000".

VERBOSE: [16:04:28.947 GMT] Get-DistributionGroup : Ending processing &
Name        GroupType ManagedBy Notes
----        --------- --------- -----
Head-of-Ops Universal {}

次の行は、問題が埋もれていると私が思う行です。

VERBOSE: [16:04:28.932 GMT] Get-DistributionGroup : Searching objects "Head-of-Ops@h***.com" of type "ADGroup" under the root "$null".

何が欠けているのか、そしてその理由を誰かが知っていますか?

2
Geco Mynx

Select-Objectを使用して計算プロパティを作成する場合は、

  1. 式、単にE/eと省略される場合があります
  2. 名前[〜#〜]または[〜#〜]ラベル。これらは同義語であり、最初の文字に短縮される場合もあります。

あなたの質問から、Get-DistributionGroup Head-of-Operationsが単一のオブジェクトを返すのか複数のオブジェクトを返すのかは不明ですか?

また、Head-of-OperationsHead-of-Opsと同じですか?

Select-Objectを介してプロパティを追加する別の方法は、[PSCustomObject]を作成することです。

foreach($HeadOP in Get-DistributionGroup Head-of-Operations){
    [PSCustomObject]@{
        Name      = $HeadOp.Name
        GroupType = $HeadOp.GroupType
        ManagedBy = $HeadOp.ManagedBy
        Notes     = (Get-Group $HeadOp.Name | Select-Object Notes)
    }
}

最終的には-ExpandProperty Notesする必要があります

        Notes     = (Get-Group $HeadOp.Name | Select-Object -ExpandProperty Notes)

またはそれより短い

        Notes     = (Get-Group $HeadOp.Name).Notes
0
LotPings

どのバージョンのExchangeを使用していますか?

Get-DistributionGroup "[email protected]" | Select-Object Name, GroupType, ManagedBy, @{Name="Notes";Expression={(Get-Group $_).Notes}} | ft -AutoSize」をテストしましたが、Exchange2010と2013の両方のラボで機能しました。

あなたの説明によると、「ManagedBy」属性がnullであることも奇妙です。このDGをどのように作成するかはわかりませんが、新しいテストDGで試してみてください。スクリプトが機能する場合は、このDGの構成を確認するか、単に再構築してください。

0
Shaw