Вы имеете дело с WQL в своих запросах, и у вас может быть только одно значение WITHIN - см. https://docs.microsoft.com/en-gb/windows/desktop/WmiSdk/within-clause, поэтому вам придется либо выбрать 300 (секунд = 5 минут), либо 900 (секунд = 15) минут) или компромиссное значение где-то между ними.
Ваш комбинированный оператор SELECT будет выглядеть так
SELECT * FROM __InstanceOperationEvent WITHIN 900 WHERE TargetInstance ISA 'SMS_Package' AND TargetInstance.Name LIKE 'drivers - %' OR TargetInstance.Name LIKE 'BIOS - %'
Измените значение WITHIN на то, что вы считаете наиболее подходящим для ваших нужд.
Вам нужны оба диска и биос одновременно или вы можете использовать оператор переключателя, управляемого параметром, для переключения между ними?
как то так
Function WMI-InstanceFilter {
[CmdletBinding()]
param (
[ValidateSet('Bios', 'Drivers' )]
[string]$InstanceType
)
# Function Started
LogTraceMessage "*** Function WMI-InstanceFilter Started ***"
Write-Verbose "*** Function WMI-InstanceFilter Started ***"
switch ($InstanceType) {
'Bios' {
$query = "SELECT * FROM __InstanceOperationEvent Within 900 Where TargetInstance ISA 'SMS_Package' and TargetInstance.Name like 'drivers - %'"
}
'Drivers' {
$query = "SELECT * FROM __InstanceOperationEvent Within 300 Where TargetInstance ISA 'SMS_Package' and TargetInstance.Name like 'BIOS - %'"
}
}
$PropertyHash = @{
QueryLanguage = "WQL"
Query = $query
Name = "Name"
EventNameSpace="root/sms/site_$($SiteCode)"
}
$Script:InstanceFilter = New-CimInstance -Namespace root/subscription -ClassName __EventFilter -Property $PropertyHash -Verbose -ErrorAction Stop
}