2017-06-14 66 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