2014-09-19 3 views
4

Я пытаюсь отфильтровать что-то вроде этого:Использование «-Filter» с переменной в PowerShell

Get-ADComputer -filter {name -like "chalmw-dm*" -and Enabled -eq "true" } .... 

Это работает как шарм и получает именно то, что я хочу ...

Теперь я хочу "имя -как ...." часть в качестве переменной, как это:

Get-ADComputer -filter {name -like '$nameregex' -and Enabled -eq "true" } | 

Я проверил несколько вопросов (например, PowerShell AD Module - Variables in Filter). Но это не работает для меня.

Я попробовал это следующее:

$nameRegex = "chalmw-dm*" 
$nameRegex = "`"chalmw-dm*`"" 

А также в Get-ADComputer команды с теми ' и без.

Может ли кто-нибудь дать мне несколько советов?

+0

переменные не интерполируются в строках одиночной кавычки. – n0rd

ответ

1

Вам не нужно кавычки переменной, так просто изменить:

Get-ADComputer -filter {name -like '$nameregex' -and Enabled -eq "true" } 

в этом:

Get-ADComputer -filter {name -like $nameregex -and Enabled -eq "true" } 

И FTR: вы используете подстановочные согласование здесь (оператор -like) , а не регулярные выражения (оператор -match).

1

Добавить двойные кавычки

$nameRegex = "chalmw-dm*" 

-like "$nameregex" или -like "'$nameregex'"

0

Или

-like '*'+$nameregex+'*' 

, если вы хотели бы использовать подстановочные знаки.