2017-06-14 68 views
2

我正在使用Powershell中的SCSM,但遇到if语句的问题。

我有一个函数根据作为变量传递给函数的条件收集数据。 实施例:

$JMLs1 = collectTickets -crit $JMLCriteria1 

collectTickets是函数,$JMLCriteria1是传递的标准。

这是collectTickets功能:

function collectTickets 
{ 
    param (
     [parameter (Mandatory=$true)] 
     $crit 
    ) 
    $fullDate = Get-Date 
    if ($fullDate.DayOfWeek -eq 'Monday') 
    { 
     $olderThan = $fullDate.AddDays(-4) 
    } 
    elseif ($fullDate.DayOfWeek -eq 'Tuesday') 
    { 
     $olderThan = $fullDate.AddDays(-4) 
    } 
    else 
    { 
     $olderThan = $fullDate.AddDays(-2) 
    } 
    if ($crit -like '$JML*') 
    { 
     $data = Get-SCSMObject -Criteria $crit | select 'Id', 'Title', 'LastModified', 'Priority' 
    } 
    else 
    { 
     $data = Get-SCSMObject -Criteria $crit | Where-Object {($_.LastModified -lt $olderThan)} | select 'Id', 'Title', 'LastModified', 'Priority' 
    } 
    return $data 
} 

我遇到的问题是与第二if语句,该if ($crit -like '$JML*') - 我不知道,如果我们可以使用通配符这样对变量或者如果语法不正确。

只是为了阐明将会有多个$JML标准变量以及多个其他标准变量,但它只是我想要区别对待的$JML标准变量。

回答

2

使用双引号而不是单引号。使用单引号,PowerShell认为您正在查找字符串$JML,而不是变量。

if ($crit -like "$JML*") 

编辑:about_Quoting documentation