I'm trying to figure out a way to get this command to filter from an array of values as opposed to one value. Currently this is how my code is (and it works when $ExcludeVerA is one value):
$ExcludeVerA = "7"
$java = Get-WmiObject -Class win32_product | where { $_.Name -like "*Java*"} |
where ({ $_.Version -notlike "$ExcludeVerA*" })
And I'd like $ExcludeVerA to have an array of values like so (this currently doesn't work):
$ExcludeVerA = "7", "3", "4"
foreach ($x in $ExcludeVerA)
{
$java = Get-WmiObject -Class win32_product | where { $_.Name -like "*Java*"} |
where ({ $_.Version -notlike "$ExcludeVerA*" })
}
Any ideas of why this second block of code doesn't work or other ideas of what I can do?
Try -notcontains
where ({ $ExcludeVerA -notcontains $_.Version })
so if I understand it corretly, then
$ExcludeVerA = "7", "3", "4"
$java = Get-WmiObject -Class win32_product | where { $_.Name -like "*Java*"} |
where ({ $ExcludeVerA -notcontains $_.Version })
That was direct answer to your question. Possible solution might be something like this:
$ExcludeVerA = "^(7|3|4)\."
$java = Get-WmiObject -Class win32_product |
where { $_.Name -like "*Java*"} |
where { $_.Version -notmatch $ExcludeVerA}
it uses regex to get job done.
Try this:
Get-WmiObject -Class Win32_Product -Filter "Name LIKE '%Java%'" |
Where-Object {$_.Version -notmatch '[734]'}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With