我正在尝试从我们的 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 -accessrights $_.AccessRights -deny:$_.Deny
它返回此错误:
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
将自动绑定(bind)来自管道的权限):Get-MailboxPermission * | Where-Object {$_.User -like "S-1-5-21*"} | Remove-MailboxPermission
关于powershell - Exchange 2010 PowerShell : Cannot bind argument,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33758267/