Exchange 2010 PowerShell:无法绑定参数

Exchange 2010 PowerShell: Cannot bind argument

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

当我执行这条命令时:

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

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

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

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

它returns这个错误:

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

我做错了什么?

感谢您的帮助。

$_ 不能那样工作,您需要将 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