在脚本中,我需要管理组的成员身份。不幸的是,用于从组中删除成员的 cmdletRemove-ADGroupMember
总是要求确认。这与 cmdlet 的描述行为相矛盾,因为有一个-Confirm
选项应该打开确认。这需要使用模糊且记录不全的冒号将值绑定到 switch 参数:-Confirm:$false
,而使用简单的 switch 更有意义-Force
。
环境中是否有设置会改变 cmdlet 的行为方式?这只是一个执行不力的功能吗?我是否缺少一些明显的文档来解释 switch 参数令人困惑的行为?
答案1
您是在问为什么不包括“-Confirm”会提示您确认吗?默认情况下,如果不指定 $false,cmdlet 将始终提示您确认。该选项可让您抑制确认。它被称为 -Confirm 可能会令人困惑,但这是因为使用 PS 您会为该参数指定一个值。因此,您实际上是在说“将 -Confirm 设置为 false/no”。如果该参数被称为 -NoConfirm 并且您必须为该参数设置一个值,那将更加令人困惑!
这是设计使然。默认情况下,当您运行此 cmdlet 时会提示,而无需
-Confirm:$false
确保您要运行该命令。
一些知识链接(请注意,它们并不直接回答问题,只是让您了解一些 PS 语法/句法):
http://blogs.msdn.com/b/powershell/archive/2006/05/10/594535.aspx
http://www.manning.com/payette/AppCexcerpt.pdf
http://technet.microsoft.com/en-us/magazine/jj554301.aspx
编辑:也许我误解了你的问题。我的回答是基于“有一个 -Confirm 选项,应该可以打开确认”。如果你的问题是为什么我必须使用冒号,那么@DavidV 的回答是正确的。
答案2
Stackoverflow 上提供了一个很好的答案(所有荣誉归功于 manojlds):
https://stackoverflow.com/questions/8525572/powershell-colon-in-commandlet-parameters