Author Posts

October 26, 2015 at 6:45 am

Basically I just want to see if the variable (in this case $roomnumber) matches any of the targets I specify (in this case 1,2 and 3). Below is what I tried, and it doesn't work.

$roomnumber = 1
if ($roomnumber -match '1','2','3') {
write-output "works"
}

I know I could do the following:

$roomnumber = 1
if ($roomnumber -eq '1' -or $roomnumber -eq '2' -or $roomnumber -eq '3') {
write-output "works"
}

But I was hoping there would be any easy way to ask from a list like:

if ($roomnumber -eq 1,13,563,12,2) {

October 26, 2015 at 6:55 am

You could try using the -contains operator

$rooms = 1,13,563,12,2
$roomnumber = 563

PS> $rooms -contains $roomnumber
True

PS> $roomnumber = 127
PS> $rooms -contains $roomnumber
False

October 26, 2015 at 8:21 am

... and if you prefer doing it the other way arround, you can also use the -in operation

C:\> $rooms = 1,13,563,12,2

C:\> $roomnumber = 563
C:\> $roomnumber -in $rooms
True

C:\> $roomnumber = 127
C:\> $roomnumber -in $rooms
False

C:\>

October 27, 2015 at 9:30 pm

Are these sequential or random numbers or both?
Does the script do anything besides output true or false for a match?

October 28, 2015 at 6:09 am

Christian Sandfeld, I like where you were going with your solution, but sadly I can't use the in operator with Powershell 1.0. Is there an "old" way to achieve this?

October 28, 2015 at 6:20 am

That is a tough one. I don't think I have ever written any scripts for version 1. That is like 10 years old or something. That would put you on Windows Server 2008 or Windows Server 2003?

Please do a get-host or $host or $PSVersionTable in a console window and paste the result here.

If you are on version one, I highly recommend an upgrade.