Назад | Перейти на главную страницу

Почему Remove-ADGroupMember по умолчанию требует подтверждения?

В сценарии мне нужно управлять членством в группе. К сожалению, командлет для удаления члена из группы, Remove-ADGroupMember всегда просит подтверждения. Это противоречит описанному поведению командлета, поскольку существует -Confirm опция, которая должна включать подтверждение. Это требует использования неясной и плохо документированной привязки двоеточия значения к параметру переключателя: -Confirm:$false, когда было бы разумнее использовать простой -Force переключатель.

Есть ли в среде параметр, который меняет поведение командлета? Это просто плохо реализованная функция? Мне не хватает какой-то очевидной документации, объясняющей запутанное поведение параметров переключателя?

Вы спрашиваете, почему при включении "-Confirm" не запрашивается подтверждение? По умолчанию, если не указано $ false, командлет всегда запрашивает подтверждение. Опция дает вам возможность подавить подтверждение. Это может сбивать с толку то, что он называется -Confirm, но это потому, что с PS вы указываете значение для этого параметра. Таким образом, вы, по сути, говорите «установить -Подтвердить на ложь / нет». Было бы намного сложнее, если бы параметр назывался -NoConfirm, и вам нужно было бы установить значение для этого параметра!

Это сделано намеренно. По умолчанию выводится запрос при запуске этого командлета без -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

РЕДАКТИРОВАТЬ: возможно, я неправильно истолковал ваш вопрос. Я основывал свой ответ на том, что «есть опция -Подтвердить, которая должна включать подтверждение». Если ваш вопрос в том, почему я должен использовать двоеточие, тогда ответ @DavidV будет правильным.

Отличный ответ предоставлен в Stackoverflow (все заслуги manojlds):

https://stackoverflow.com/questions/8525572/powershell-colon-in-commandlet-parameters