2012-05-16 2 views
0

Я хотел бы знать, передан ли параметр whatif командлету.Как узнать, программно ли передан параметр «whatif» командному компьютеру?

напр: удалить-mycmdlet -whatif

Я пытался сделать это, находя значение переменной: WhatIfPreference.

Но его всегда дает ложь.

Не могли бы вы сообщить мне, как я могу узнать, прошел ли параметр whatif?

Большое спасибо,

С уважением, Naresh

ответ

0

Когда я определить функцию так:

function Test-WhatIf { 
[CmdletBinding(SupportsShouldProcess = $true)] 
param (
) 

    $WhatIfPreference 
    $PSBoundParameters.ContainsKey('WhatIf') 
} 

я получаю $ ложной или $ правда, в зависимости от добавления -WhatIf к команде. Хотя это просто расширенная функция, я бы не ожидал другого поведения в компилируемой команде ... Вы уверены, что правильно реализовали SupportsShouldProcess?

+0

Большое спасибо за быстрый ответ. Это настраиваемый командлет, реализованный в .net (C#). Как я могу сделать это программно? в основном я использовал «объект PSCmdlet GetVariableValue (имя строки)». Он всегда возвращал false. Btw, есть ли какой-либо равный в C# для $ PSBoundParameters.ContainsKey ('WhatIf')? – Dreamer

+0

Да, я уверен, что я реализовал поддержку надлежащим образом, так как параметры подтверждения/whatif работают так, как ожидалось, когда пользователь их передает. Я объявил свой командлет со следующими атрибутами: [Cmdlet (VerbsCommon.Remove, «EmcLun», SupportsShouldProcess = true, ConfirmImpact = ConfirmImpact.High)] Просто, что мне нужно знать, что пользователь прошел этот параметр, но не знает, как делать это программно в .net. – Dreamer

+0

ОК, схватил VS и попытался найти то же самое в «правильных» командлетах. Вы найдете мой ответ на второй поток ... :) – BartekB