简单的电子邮件搜索



我正试图从ADGroup获得电子邮件列表。问题是组中有成员没有电子邮件,如果字段为空,我希望变量显示ADuser而不是电子邮件。

当前代码是这个

$emails = get-adgroupmember gg-sccm-admins  | get-aduser -Properties emailaddress | select emailaddress
$emails+= get-adgroupmember gg-sccm-site_admins  | get-aduser -Properties emailaddress | select emailaddress
Write-Output $emails

我的想法是使用IF,如果电子邮件字段是空的,在变量中写用户名,但我不能让它工作。

我想你可以在下面使用:

$emails = get-adgroupmember gg-sccm-admins  | Get-ADUser -Properties emailaddress | select @{N="EmailAddress";E={if($_.emailaddress){$_.emailaddress}else{$_.samaccountname}}}
$emails+= get-adgroupmember gg-sccm-site_admins  | Get-ADUser -Properties emailaddress | select @{N="EmailAddress";E={if($_.emailaddress){$_.emailaddress}else{$_.samaccountname}}}
Write-Output $emails

为什么不两者都做呢?

[System.Collections.ArrayList]$Emails = @()
[System.Collections.ArrayList]$Names = @()
[array]$GroupMembers = Get-ADGroupMember "gg-sccm-admins" | Get-ADUser -Properties emailaddress,DisplayName | Select EmailAddress, DisplayName
Foreach($user in $GroupMembers){
$null = $Emails.Add($User.EmailAddress)
$null = $Names.Add($User.DisplayName)
}
For($i=0;$i -lt $Names.count;$i++){
[pscustomobject]@{
"User Names" = $Names[$i]
"Emails" = $Emails[$i]
}
}

另外,我没有使用固定数组,而是将其更改为ArrayList。应该使过程更快,因为它不需要每次都用一个新项重新创建每个数组。

最新更新