You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell中提取Exchange用户的SIP与SMTP地址至数组

解决Exchange PowerShell提取SIP地址的问题

你的代码提取SIP地址失败,核心原因是EmailAddresses返回的是ProxyAddress对象集合,而非纯字符串,直接用-like "*sip*"无法正确匹配。下面提供两种可靠的解决方法:

方法一:利用ProxyAddress对象属性(推荐)

ProxyAddress对象自带Prefix和Address属性,直接过滤前缀为SIP的条目,提取地址最准确:

$list_UsersExtCloud = 
Get-Recipient e12367 | 
Select-Object Alias, EmailAddresses, @{
    Name = 'SIP'
    Expression = { 
        ($_.EmailAddresses | Where-Object { $_.Prefix -eq 'SIP' }).Address -join ',' 
    }
}

方法二:字符串匹配方式

如果习惯用字符串处理,先将ProxyAddress对象转为字符串,匹配SIP:前缀后再去除前缀:

$list_UsersExtCloud = 
Get-Recipient e12367 | 
Select-Object Alias, EmailAddresses, @{
    Name = 'SIP'
    Expression = { 
        $_.EmailAddresses | Where-Object { "$_" -like "SIP:*" } -replace 'SIP:', '' -join ',' 
    }
}

扩展:提取所有SMTP地址

如果需要同时提取所有SMTP地址(包括主地址和别名),可以添加额外的计算属性:

$list_UsersExtCloud = 
Get-Recipient e12367 | 
Select-Object Alias, EmailAddresses, 
    @{Name = 'SIP'; Expression = { ($_.EmailAddresses | Where-Object { $_.Prefix -eq 'SIP' }).Address -join ',' }},
    @{Name = 'SMTPAddresses'; Expression = { ($_.EmailAddresses | Where-Object { $_.Prefix -match 'SMTP' }).Address -join ',' }}

后续处理全部用户时,只需将Get-Recipient e12367改为Get-Recipient -ResultSize Unlimited即可。

内容的提问来源于stack exchange,提问作者hdsouza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 07:45:30