繁体   English   中英

使用Get-AzureADUser在PowerShell中从“ SMTP:email@domain.com”中删除“ SMTP”

[英]Remove 'SMTP' from 'SMTP:email@domain.com' in PowerShell using Get-AzureADUser

我正在使用以下脚本为O365中的用户显示别名,这些别名最终将要导出。

Get-AzureADUser |
    Select-Object @(
        @{L = "Name"; E = { $_.DisplayName}}
        @{L = "Email"; E = { $_.UserPrincipalName}}
        @{L = "Aliases"; E = { $_.ProxyAddresses -join ";"}}
    )

在“别名”( ProxyAddresses )列中,显示所有用“ ;分隔的别名; 符合预期,但它还包括SMTP:在所有方法之前。

有没有办法从这些值中删除SMTP:

当前结果SMTP:email@domain.com;SMTP:email2@domain.com

email@domain.com;email2@domain.com 结果email@domain.com;email2@domain.com

Get-AzureADUser |
    Select-Object @(
        @{L = "Name"; E = { $_.DisplayName}}
        @{L = "Email"; E = { $_.UserPrincipalName}}
        @{L = "Aliases"; E = { $_.ProxyAddresses -replace '^smtp:' -join ';' }}
    )

这将替换smtp:在每个代理地址的开头( ^ ),使用PowerShell的功能使运算符自动在数组的所有成员上工作,然后加入结果。

如果您还想丢失“ .onmicrosoft.com”地址,则应该可以使用

Get-AzureADUser |
    Select-Object @(
        @{L = "Name"; E = { $_.DisplayName}}
        @{L = "Email"; E = { $_.UserPrincipalName}}
        @{L = "Aliases"; E = { 
            $proxies = $_.ProxyAddresses -replace '^smtp:'
            $proxies = $proxies | Where-Object { $_ -notlike '*.onmicrosoft.com' }
            $proxies -join '; ' }
        }
    )

请注意, ProxyAddresses属性还可以包含其他条目,例如SIP:upn@domain.comX500: /o=company/ou=External (FYDIBOHF25SPDLT)/cn=Recipients/cn=userxxx

如果您还想排除这些,请使用

Get-AzureADUser |
    Select-Object @(
        @{L = "Name"; E = { $_.DisplayName}}
        @{L = "Email"; E = { $_.UserPrincipalName}}
        @{L = "Aliases"; E = { 
            $proxies = $_.ProxyAddresses
            $proxies = $proxies | Where-Object { $_ -match '^smtp:' -and $_ -notlike '*.onmicrosoft.com' }
            $proxies -replace '^smtp:' -join '; ' }
        }
    )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM