2017-12-06 11 views
0

タイトルが正しいかどうかわかりません。そして、私はこれが簡単に答えられ、たぶんインターネット上にあることを知っています。しかし、私はあなたの助けが必要です。Powershell - パイプライン内のオブジェクトの配列の個々のメンバーを出力する

複数のオブジェクトを返すpowershellコマンドを実行し、各オブジェクトに独自のメンバーがあり、そのメンバーの1つが複数のオブジェクトの別のリストである場合、これを画面にきれいに出力する最も効率的な方法は何ですか?

たとえば、ユーザーがOffice 365の中で選択したMFA認証方法を照会するため、次のコマンドを参照してください。

Get-MsolUser -All | where {$_.StrongAuthenticationMethods -ne $null} | Select-Object -Property UserPrincipalName, StrongAuthenticationMethods 

出力は次のとおりです。

UserPrincipalName     StrongAuthenticationMethods 
-----------------     --------------------------- 
[email protected]  {Microsoft.Online.Administration.StrongAuthenticationMethod, Microsoft.Online.Adm... 
[email protected]  {Microsoft.Online.Administration.StrongAuthenticationMethod, Microsoft.Online.Adm... 
[email protected]  {Microsoft.Online.Administration.StrongAuthenticationMethod, Microsoft.Online.Adm... 

私は続いUserPrincipalNameををリストします各StrongAuthenticationMethodsオブジェクトのメンバーの値を1行のコードで返します。

私には簡単に言えば、これには明らかな答えがあります。

答えて

0

これを行う1つの方法は、内側のコレクションを展開し、外側のコレクション内の各オブジェクトの1つを出力することです。例(テストされていない):

Get-MsolUser -All | Where-Object { $_.StrongAuthenticationMethods } | ForEach-Object { 
    $upn = $_.UserPrincipalName 
    $_.StrongAuthenticationMethods | ForEach-Object { 
    [PSCustomObject] @{ 
     "UserPrincpalName"   = $upn 
     "StrongAuthenticationMethods" = $_ 
    } 
    } 
関連する問題