使用Get-AzureADUser删除PowerShell中特定域的完整电子邮件
我目前正在使用下面的脚本使用Get-AzureADUser删除PowerShell中特定域的完整电子邮件,powershell,email,scripting,azure-active-directory,Powershell,Email,Scripting,Azure Active Directory,我目前正在使用下面的脚本 Get-AzureADUser | Select-Object @( @{L = "Name"; E = { $_.DisplayName}} @{L = "Email"; E = { $_.UserPrincipalName}} @{L = "Aliases"; E = { $_.ProxyAddresses -replace '^smtp:' -join ';' }} ) 我的大多数结果在数组中返回
Get-AzureADUser |
Select-Object @(
@{L = "Name"; E = { $_.DisplayName}}
@{L = "Email"; E = { $_.UserPrincipalName}}
@{L = "Aliases"; E = { $_.ProxyAddresses -replace '^smtp:' -join ';' }}
)
我的大多数结果在数组中返回的电子邮件地址类似于email@domain.onmicrosoft.com
。我需要从别名(ProxyAddresss)字段中的数组中删除这些电子邮件。基本上,任何包含Microsoft.com的电子邮件都需要删除
当前结果:email1@domain.com;email2@domain.com;email3@domain.onmicrosoft.com
期望结果:
email1@domain.com;email2@domain.com
您可以在那里链接另一个操作员,以用作过滤器:
Get-AzureADUser |
Select-Object @(
@{L = "Name"; E = { $_.DisplayName}}
@{L = "Email"; E = { $_.UserPrincipalName}}
@{L = "Aliases"; E = { $_.ProxyAddresses -notlike '*onmicrosoft*' -replace '^smtp:' -join ';' }}
)
但现在阅读起来越来越难了。请注意,表达式是一个完整的脚本块,因此您可以将其拆分为多行,并将内容写得更清楚,例如:
Get-AzureADUser |
Select-Object @(
@{L = "Name"; E = { $_.DisplayName}}
@{L = "Email"; E = { $_.UserPrincipalName}}
@{L = "Aliases"; E = {
$filteredMails = $_.ProxyAddresses | Where-Object {
$_ -notlike '*onmicrosoft*'
}
$filteredMails = $filteredMails -replace '^smtp:'
$filteredMails -join ';'
}}
)
这个问题已经被提出和回答了@西奥:他们问了一个问题,我回答了,他们接受了我的回答。在那之后,他们在评论中扩展/改变了他们的问题,这是不礼貌的。一个不同的问题实际上应该是关于StackOverflow的不同问题。除此之外,你为什么要评论我的答案?关于唯一有意义的事情,是你要求发问者改变他们对另一个问题的接受答案,并让你将这个问题标记为重复,或以某种方式标记为主持人的注意。除了删除我的答案之外,我无能为力。对不起,我在错误的地方发表了评论。是关于问题,不是你的答案。后来我标记为重复。可能是重复的