我正在尝试获取我们在本地 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