2017-12-01 26 views
1

Get-EventLogコマンドレットのグラフィカルインスタンスを作成して、ユーザーが入力できるパラメーターと値をロックできるようにします。下の画像では、紫色のボックス(左の列)が私によって設定されますが、黄色のボックス(右の列)は任意の値のユーザー入力を受け入れることができます。 enter image description here ここでは、ユーザが入力した値を取ってGet-EventLogコマンドレットをこれらの値で呼び出す関数を作成しています。例えば、ユーザが入力のみ最新のパラメータの値があれば、これは、それが生成するコードのようになります。空の値をコマンドレットのパラメーターに渡す

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

問題は、コマンドレットが-Afterの許容入力として$null認識しないということですパラメータは-Beforeです。エラーをスローせずに、空の値をコマンドレットのパラメータに渡すにはどうすればよいですか?

+1

'-Before'、あなたは' $のnull'なのでを指定することはできませんので、 '、' DateTime'値を必要と-After'。ただし、パラメータを省略するか、代わりに '[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

関連する問題