Powershell foreach结果到数组



我正在尝试运行下面的代码,并将结果发送到HTML电子邮件中。如果我只是按原样运行它,那么所有的输出都在一行上,这是一团糟。我以为我可以把foreach保存到数组中,但这不起作用。只是得到一个空白数组。如果我不运行它,我会将输出输出到屏幕上,所以我知道我得到了结果。

Connect-MsolService -Credential $Credential
$customers = Get-MsolPartnerContract -All
$body = @(foreach ($customer in $customers) {
if ($customer.defaultdomainname -notlike "*Domain1*" -and $customer.defaultdomainname -notlike "*DomainABC*") {
Get-MsolUser -All -EnabledFilter EnabledOnly -TenantId $($customer.TenantId) | ? {$_.StrongAuthenticationRequirements.State -eq $null -and $_.isLicensed -eq "TRUE"}  | select UserPrincipalName
}
})

我没有一个实例可以播放/验证,但可以这样尝试(当然可以使用您选择的任何代码或其他格式(:

Connect-MsolService -Credential $Credential
[System.Collections.ArrayList]$body = @()
(Get-MsolPartnerContract -All) | 
ForEach-Object {
if ($PSItem.defaultdomainname -notlike '*Domain1*' -and 
$PSItem.defaultdomainname -notlike '*DomainABC*'
) 
{
$body.Add(
(
Get-MsolUser -All -EnabledFilter EnabledOnly -TenantId $($PSItem.TenantId) | 
Where-Object {
$PSItem.StrongAuthenticationRequirements.State -eq $null -and 
$PSItem.isLicensed -eq 'TRUE'
}
).UserPrincipalName
)
}
}

最新更新