Exchange 2010 PowerShell:无法绑定参数

Posted

技术标签:

【中文标题】Exchange 2010 PowerShell:无法绑定参数【英文标题】:Exchange 2010 PowerShell: Cannot bind argument 【发布时间】:2015-11-17 13:32:39 【问题描述】:

我正在尝试从我们的 Exchange 服务器中的所有邮箱中删除孤立的用户对象。

当我执行这个命令时:

get-mailboxpermission * | where $_.User -like "S-1-5-21*" | foreach $_.Identity.Name

它正确地返回一个列表,其中包含所有仍设置了孤立用户帐户权限的邮箱。

但是,当我尝试通过这样做来删除它们时:

get-mailboxpermission * | where $_.User -like "S-1-5-21*" | remove-mailboxpermission -identity $_.Identity.Name -user $_.User -acces-s-rights $_.AccessRights -deny:$_.Deny

它返回此错误:

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

我做错了什么?

感谢您的帮助。

【问题讨论】:

【参考方案1】:

$_ 不行,你需要将Remove-MailboxPermission 语句包装在ForEach-Object 中:

Get-MailboxPermission * | Where-Object $_.User -like "S-1-5-21*" | ForEach-Object 
  Remove-MailboxPermission -Identity $_.Identity.Name -User $_.User -AccessRights $_.AccessRights -Deny:$_.Deny

由于 Exchange 似乎不太喜欢嵌套管道,您可以简单地完全放弃参数参数(Remove-MailboxPermission 将自动绑定来自管道的权限):

Get-MailboxPermission * | Where-Object $_.User -like "S-1-5-21*" | Remove-MailboxPermission

【讨论】:

我已经试过这个并且得到了错误Pipelines cannot be executed concurrentlyGet-MailboxPermissionRemove-MailboxPermission 旨在从彼此获取管道输入,因此无需使用 ForEach。 see this link @mariu5 我的错。您是否有理由使用Remove-MailboxPermission 指定所有这些参数? Get-MailboxPermission|Remove-MailboxPermission 应该足够了 成功了!我认为您必须指定确切的权限才能将其删除,但显然,这不是必需的。谢谢你的帮助。如果您编辑您的答案,如果您愿意,我可以将其标记为解决方案。

以上是关于Exchange 2010 PowerShell:无法绑定参数的主要内容,如果未能解决你的问题,请参考以下文章

在powershell中加载Exchange PowerShell模块

PowerShell-Exchange:Check High Item

用于 Exchange 2007 的 Powershell 管理单元

Exchange 2007 邮箱权限(没有 Powershell Cmdlet)

PowerShell-Exchange:Services Monitor Report

Powershell调用RemoteExchange.ps1