Using "-Filter" with a variable
Solution 1
You don't need quotes around the variable, so simply change this:
Get-ADComputer -Filter {name -like '$nameregex' -and Enabled -eq "true"}
into this:
Get-ADComputer -Filter {name -like $nameregex -and Enabled -eq "true"}
Note, however, that the scriptblock notation for filter statements is misleading, because the statement is actually a string, so it's better to write it as such:
Get-ADComputer -Filter "name -like '$nameregex' -and Enabled -eq 'true'"
And FTR: you're using wildcard matching here (operator -like
), not regular expressions (operator -match
).
Solution 2
Add double quote
$nameRegex = "chalmw-dm*"
-like "$nameregex"
or -like "'$nameregex'"
Michael
Updated on February 29, 2020Comments
-
Michael about 4 years
I try to filter out something like this:
Get-ADComputer -Filter {name -like "chalmw-dm*" -and Enabled -eq "true"} ...
This works like a charm and gets exactly what I want...
Now I want the "name -like ..." part as a variable like this:
Get-ADComputer -Filter {name -like '$nameregex' -and Enabled -eq "true"} |
I checked several questions (for example, PowerShell AD Module - Variables in Filter), but this isn't working for me.
I tried it with the following:
$nameRegex = "chalmw-dm*" $nameRegex = "`"chalmw-dm*`""
And also in the
Get-ADComputer
command with those'
and without.Could anyone give me some hints?