Powershell Where-Object 未过滤扩展属性

Powershell Where-Object 未过滤扩展属性

我正在尝试获取我们在本地 Exchange 中注册的所有电子邮件地址的列表,但我想排除所有 X400 类型的地址。我尝试了以下所有命令:

Get-Recipient | select name,recipienttype -expand emailaddresses | select name,recipienttype,prefix,addressstring,isprimaryaddress | where -property prefix -eq 'SMTP'
Get-Recipient | select name,recipienttype -expand emailaddresses | select name,recipienttype,prefix,addressstring,isprimaryaddress | where {$_.prefix -eq 'SMTP'}
Get-Recipient | select name,recipienttype -expand emailaddresses | select name,recipienttype,prefix,addressstring,isprimaryaddress | where-object {$_.prefix -eq 'SMTP'}
Get-Recipient | select name,recipienttype -expand emailaddresses | where-object {$_.prefix -eq 'SMTP'} | select name,recipienttype,prefix,addressstring,isprimaryaddress
Get-Recipient | select name,recipienttype -expand emailaddresses | where-object -property Prefix -eq 'SMTP' | select name,recipienttype,prefix,addressstring,isprimaryaddress

如果我排除 where-object,它会返回所有内容。我遗漏了什么?我正在使用运行 Powershell 5.1 的 Exchange 命令行管理程序。

答案1

您忽略了该Prefix属性不是字符串。您可以调用 ToString 方法,但由于有PrefixString可用方法,因此使用该方法会更简单。

Get-Recipient | select name,recipienttype -expand emailaddresses | select name,recipienttype,prefixstring,addressstring,isprimaryaddress | ? { $_.PrefixString -eq "smtp" }

答案2

您可以尝试以下命令列出所有 SMTP 电子邮件地址。

Get-Recipient | Select Name -ExpandProperty EmailAddresses | Select Name,  SmtpAddress

如果您想使用 csv 文件导出输出。

Get-Recipient | Select Name -ExpandProperty EmailAddresses | Select Name, SmtpAddress | Export-csv c:\mailAddress.csv

相关内容