如何在PowerShell的Where子句中忽略未定义的空参数?
PowerShell Where子句动态忽略未定义参数的实现方法
你可以通过在每个判断条件前增加“参数为空时直接返回真”的逻辑,实现动态忽略未定义参数的效果,无需编写多个if分支。
你的参数定义:
Param( [parameter(position=0)] [String] $JobName, [parameter(position=1)] [String] $JobID )
修正后的Where子句代码:
$Timerjob = Get-SPTimerJob | Where-Object { ($JobID -eq $null -or $_.Id -eq $JobID) -and ($JobName -eq $null -or $_.Title -eq $JobName) }
逻辑说明:
- 当
$JobID为空时,$JobID -eq $null返回$true,整个($JobID -eq $null -or $_.Id -eq $JobID)条件自动成立,相当于忽略ID的判断 - 当
$JobID有值时,才会执行$_.Id -eq $JobID的匹配判断 - 两个条件用
-and连接,确保所有有值的参数都满足匹配要求;如果两个参数都为空,所有条件都成立,会返回所有SPTimerJob实例
内容的提问来源于stack exchange,提问作者Allen
相关产品推荐
相关产品推荐

