2012-05-16 3 views
0

whatif 매개 변수가 cmdlet에 전달되었는지 여부를 알고 싶습니다. 전 대한매개 변수 "whatif"가 프로그래밍 방식으로 고객 cmdlet에 전달되었는지 여부를 확인하는 방법은 무엇입니까?

: 나는 변수의 값을 찾아 그것을 시도

-WhatIf 제거-mycmdlet : WhatIfPreference.

그러나 항상 false가됩니다.

whatif 매개 변수가 전달되었는지 어떻게 알 수 있습니까?

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

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

내가 -WhatIf의 추가에 따라, $ 허위 또는 $ 사실 얻을 : 나는 그런 기능을 정의 할 때

, 당신에게

감사합니다, 레쉬

답변

0

를 대단히 감사합니다 명령에. 이것은 고급 기능 일 뿐이지 만 컴파일 된 명령에서 다른 동작을 기대하지는 않습니다 ... SupportsShouldProcess를 올바르게 구현 했습니까?

+0

빠른 답장을 보내 주셔서 감사합니다. 이것은 .net (C#)에서 구현 된 사용자 지정 cmdlet입니다. 프로그래밍 방식으로 어떻게 할 수 있습니까? 기본적으로 "PSCmdlet의 개체 GetVariableValue (문자열 이름)"을 사용했습니다. 항상 false를 반환했습니다. Btw, C#에서 $ PSBoundParameters.ContainsKey ('WhatIf')에 대한 등식이 있습니까? – Dreamer

+0

예, 확실하게/whatif 매개 변수가 사용자가 전달할 때 예상대로 작동하는지 확인하기 위해 supportsshouldprocess를 올바르게 구현했습니다. 나는 다음과 같은 특성 집합을 가진 내 cmdlet을 선언했습니다. [Cmdlet (VerbsCommon.Remove, "EmcLun", SupportsShouldProcess = true, ConfirmImpact = ConfirmImpact.High)] 사용자가이 매개 변수를 전달했는지 알 필요가 있지만 어떻게 알지 못합니다. 프로그래밍 방식으로 .net에서 수행하십시오. – Dreamer

+0

OK, VS를 잡고 "적절한"cmdlet에서 동일한 것을 찾으려고했습니다. 당신은 두 번째 스레드에서 내 대답을 찾을 수 있습니다 :) – BartekB

관련 문제