Author Posts

June 17, 2016 at 6:42 pm

what's a better way to say

| where {$ -like "*this*" -or $ -like "*that*" -or $ -like "*theOther*}

is "where property -in (....)" supposed to work with wildcards?

June 17, 2016 at 6:59 pm

-in does not work with wildcards, no, nor does it do what I think you're thinking. -in is a logical opposite of -contains, and it checks for an object's membership in a collection. It isn't like the T-SQL "IN" clause. There is no syntax for "-in (...)" in PowerShell.

You could do this:

$possibles = @('this','that','theOther')
where {$ -in $possibles}

June 17, 2016 at 7:09 pm

I think I need the wildcards. The value of property is going to be "something this etc" or "something that etc"

June 17, 2016 at 7:19 pm

Personally, I'd use the -match operator here, since regex has an "or" operator built-in:

$something | Where { $ -match 'this|that|theother' }

June 17, 2016 at 8:08 pm

thanks Dave, match seems to be working.

my script is looking for expiring certificates from the Local Machine's Personal store, Trusted Root CA store, and Intermediate CA store, but I really only care about certificates that were issued by certain (internal) entities– mainly because there are some really old, expired trusted root certificates that I think maybe the OS depends on, so I don't want to delete them. but the format of the certificate "subject" (aka the 'property' in my original question) is not consistent. most of the time it's "CN=Some CA,OU=Some Department,O=That Company", etc., but occasionally it's an email address

  • This reply was modified 2 years, 3 months ago by  John Curtiss.
  • This reply was modified 2 years, 3 months ago by  John Curtiss.