首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Exchange中的所有SMTP地址前添加

在Exchange中的所有SMTP地址前添加
EN

Stack Overflow用户
提问于 2014-07-02 17:21:16
回答 1查看 297关注 0票数 0

我正在寻找脚本,帮助我添加"_“在Exchange中的所有SMTP地址。

假设我们有一个用户John Doe。John有3个不同的SMTP地址:

john.doe@contoso.com

jdoe@domain.com,

john@contoso.com

我想要更改禁用交换中的所有功能(如OWA,ActiveSync等),隐藏他在GAL中的帐户,并将他的所有地址设置为:

_john.doe@contoso.com

_jdoe@domain.com,

_john@contoso.com

我可以对主SMTP执行此操作,但不能对其余SMTP执行此操作:(

现在,我尝试了这样的解决方案:

代码语言:javascript
复制
Set-Mailbox $sam -HiddenFromAddressListsEnabled $true -DomainController $dmc
Set-CasMailbox $sam -OWAEnabled $false -ActiveSyncEnabled $false -MAPIEnabled $false -PopEnabled $false -ImapEnabled $false -DomainController $dmc
mbx = Get-Mailbox $sam -DomainController $dmc | select -expand EmailAddresses | %{$_.SmtpAddress}

        foreach ($M in $mbx)
        {
           [string]$email += "'smtp:_"+$M+"',"
        } 

但这对我不起作用。我是个新手,所以你能帮我吗?

EN

回答 1

Stack Overflow用户

发布于 2014-07-03 03:04:08

多个问题:

  1. 主要问题是您正在生成新地址的列表,但没有修改邮箱对象。仅对从邮箱查询的结果运行foreach循环不会修改该对象。您需要使用 set -Mailbox来实际设置新地址:

Set-Mailbox -EmailAddresses

  • The你创建字符串的方式,它将有一个尾随的逗号。如果你想从循环生成的字符串中创建一个逗号分隔的字符串,可以这样做:

$email = $(foreach ($m in $mbx) { "'smtp:_“+ $m + "'”}) -join ',‘

循环返回由每次迭代生成的字符串数组,邮箱将它们连接成逗号分隔的字符串。

  • 说,您实际上并不想将它们连接到逗号分隔的字符串,因为Set- -join ',' 的Set参数接受一个数组参数。因此,您只需要使用循环的返回值作为argument.

  • Adding,因为这是默认的。

  • 另一方面,如果您只修改SMTP地址,那么您确实希望使用Where-Object来过滤SMTP地址的EmailAddresses属性的内容:

?{$_.Prefix.ToString() -eq 'smtp'}

把所有这些放在一起:

代码语言:javascript
复制
foreach ($mbx in (Get-Mailbox <whatever>)) {
  $modified_addresses = $mbx.EmailAddresses `
  | ?{$_.Prefix.ToString() -eq 'smtp'} `
  | select -ExpandProperty EmailAddresses `
  | %{"_$_"}
  Set-Mailbox $mbx -EmailAddresses $modified_addresses
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24527358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档