Exchange 2010 Powershell:删除与用户关联的邮件联系人

Exchange 2010 Powershell:删除与用户关联的邮件联系人

早上好!

我有一个简单的问题。我该如何删除与某个用户关联的邮件联系人?这是我尝试过的方法:

Get-Mailbox 'jsmith' | select ForwardingAddress | Remove-MailContact

这将引发命令管道错误:

The input object cannot be bound to any parameters for the command either because the command does not take pipeline input or the input and its properties do
 not match any of the parameters that take pipeline input.
    + CategoryInfo          : InvalidArgument: (@{ForwardingAdd...ding/J Smith}:PSObject) [Remove-MailContact], ParameterBindingException
    + FullyQualifiedErrorId : InputObjectNotBound,Remove-MailContact

然后我尝试了这个,以防万一:

Get-Mailbox 'jsmith' | select ForwardingAddress | Remove-MailContact $_

并收到此:

Cannot bind argument to parameter 'Identity' because it is null.
    + CategoryInfo          : InvalidData: (:) [Remove-MailContact], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Remove-MailContact

但是,如果我只运行这个:

Get-Mailbox 'jsmith' | select ForwardingAddress 

我得到了这样的答复:

ForwardingAddress
-----------------
ObfuscatedDomain.com/E-mail Forwarding/J Smith

为了保护无辜者,名字均已更改。

显然,我不太擅长使用 Exchange powershell,但我正在学习哈哈。我假设问题是因为从 select ForwardingAddress 返回的数据不是 Remove-MailContact 会接受的标识符。但是,Get-Mailbox 只有两个“转发”属性。

答案1

首先,该ForwardingAddress物业确实不是必须与邮件联系人相对应。(我有几个列出其他邮箱的联系人,还有不少列出通讯组的联系人)。只要记住这一点,我们就可以继续。

问题在于您对 SELECT 动词的使用,以及它如何返回属性的一部分而不是完整对象。尝试:Remove-MailContact $(Get-Mailbox "jsmith").ForwardingAddress

这是获取转发地址的对象。另一种选择(如果你不介意多行的话)是:

$mailbox = Get-Mailbox "jsmith"
$forward = $mailbox.ForwardingAddress
Remove-MailContact $forward

请记住,所有这些都假设 ForwardingAddress 引用的是 MailContact 类型的对象,但这并不能保证(它可以是任何类型的 Direcotry.ADObjectId)

答案2

我相信您正在寻找Disable-MailUser <username>,它将禁用帐户的电子邮件帐户部分,但保持 AD 用户帐户不变。

如果您希望删除 Active Directory 中没有帐户的联系人的电子邮件属性User,那么您正在寻找Disable-MailContact <username>

相关内容