特定の配布グループのメモを取得し、配布グループの名前やその他の情報と一緒に出力するワンライナーを作成したいと思います。
私はそれをグーグルで検索し、すべて同じソリューションで異なるソースを見つけました。これは私が見つけた解決策の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".
何が欠けているのか、そしてその理由を誰かが知っていますか?
Select-Object
を使用して計算プロパティを作成する場合は、
あなたの質問から、Get-DistributionGroup Head-of-Operations
が単一のオブジェクトを返すのか複数のオブジェクトを返すのかは不明ですか?
また、Head-of-Operations
はHead-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
どのバージョンの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の構成を確認するか、単に再構築してください。