2017-12-01 1 views
1

사용자가 입력 할 수있는 매개 변수와 값을 잠글 수 있도록 Get-EventLog cmdlet의 그래픽 인스턴스를 작성하고 있습니다. 아래 그림에서 자주색 상자 (왼쪽 열)는 나에 의해 설정되지만 황갈색 상자 (오른쪽 열)는 모든 값에 대해 사용자 입력을 허용 할 수 있습니다. enter image description here 이 백 엔드에서 사용자가 입력 한 모든 값을 취하여 Get-EventLog cmdlet을 해당 값으로 호출하는 함수를 작성했습니다. 전용 입력의 최신 파라미터에 대한 값을 사용자가,이 코드 될 경우, 예를 들어, 생성 것이다 :cmdlet 매개 변수에 빈 값 전달

Get-EventLog -LogName Application -Source sourcename -Newest uservalue ` 
     -After $null -Before $null 

를 문제는 cmdlet가 -After 대한 허용 가능한 입력으로 $null을 인식하지 않는다는 것이다 및 -Before 매개 변수 오류를 발생시키지 않고 cmdlet의 매개 변수에 빈 값을 전달하려면 어떻게해야합니까?

+1

'-Before'와'당신'$의 null'를 지정할 수 -After'이하는'DateTime' 값이 필요합니다. 그러나 매개 변수를 생략하거나'[DateTime] :: MinValue' 또는'[DateTime] :: MaxValue'를 대신 사용할 수 있습니다. –

+0

예,'-After'와'-Before'에서 작동했을 것입니다. 그러나 사용자가 int를 취하는'-Newest'에 대한 값을 입력하지 않으면 여전히 문제가있었습니다. 그러나 Splatting은 그것을 처리하는 것처럼 보입니다. :) – CuriousOne

답변

5

Use Splatting.

$params = @{ 
    LogName = 'Logname' 
    Source = 'Source' 
} 

if ($AfterValue) { 
    $params.After = $AfterValue 
} 

if ($BeforeValue) { 
    $params.Before = $BeforeValue 
} 

if ($NewestValue) { 
    $params.Newest = $NewestValue 
} 

Get-EventLog @params 
+1

이것은 정확하게 내가 찾고있는 것입니다. 감사! – CuriousOne

관련 문제