将空值传递给cmdlet参数

时间:2017-12-01 16:23:34

标签: powershell null parameter-passing cmdlets

我正在编写Get-EventLog cmdlet的图形实例,以便我可以锁定用户可以输入的参数和值。在下图中,紫色框(左列)将由我设置,但棕褐色框(右列)可以接受任何值的用户输入。 enter image description here 在后端,我正在编写一个函数,它将采用用户输入的任何值,并使用这些值调用Get-EventLog cmdlet。例如,如果用户只输入最新参数的值,那么这将是它将生成的代码:

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

问题是cmdlet无法将$null识别为-After-Before参数的可接受输入。如何在不抛出错误的情况下将空值传递给cmdlet的参数?

1 个答案:

答案 0 :(得分: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