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 concurrently
。 Get-MailboxPermission
和 Remove-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)