我不确定标题是否正确。我知道这很容易回答,可能都在互联网上。但是,我需要你的帮助。
如果我运行一个返回多个对象的powershell命令,并且每个对象都有自己的成员,其中一个成员是另一个多个对象的列表,那么将它干净地输出到屏幕的最有效方法是什么?
例如,请参阅以下命令以查询用户在Office 365中选择的MFA身份验证方法:
Get-MsolUser -All | where {$_.StrongAuthenticationMethods -ne $null} | Select-Object -Property UserPrincipalName, StrongAuthenticationMethods
输出结果为:
UserPrincipalName StrongAuthenticationMethods
----------------- ---------------------------
user1@domain.com {Microsoft.Online.Administration.StrongAuthenticationMethod, Microsoft.Online.Adm...
user2@domain.com {Microsoft.Online.Administration.StrongAuthenticationMethod, Microsoft.Online.Adm...
user3@domain.com {Microsoft.Online.Administration.StrongAuthenticationMethod, Microsoft.Online.Adm...
我想在一行代码中列出UserPrincipalName,后跟每个StrongAuthenticationMethods对象的MethodType
成员的值。
请放轻松,我知道这有明显的答案。
答案 0 :(得分:0)
执行此操作的一种方法是展开内部集合,并为外部集合中的每个对象输出一个;示例(未测试):
Get-MsolUser -All | Where-Object { $_.StrongAuthenticationMethods } | ForEach-Object {
$upn = $_.UserPrincipalName
$_.StrongAuthenticationMethods | ForEach-Object {
[PSCustomObject] @{
"UserPrincpalName" = $upn
"StrongAuthenticationMethods" = $_
}
}