我在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
条件变量。
答案 0 :(得分:3)
使用双引号而不是单引号。使用单引号,PowerShell认为您正在查找文字字符串$JML
,而不是变量。
if ($crit -like "$JML*")