在PowerShell中使用带有变量的"-Filter"

Mic*_*ael 7 powershell filter

我试着过滤掉这样的东西:

Get-ADComputer -Filter {name -like "chalmw-dm*" -and Enabled -eq "true"} ...
Run Code Online (Sandbox Code Playgroud)

这就像一个魅力,正是我想要的......

现在我希望"name-like ..."部分作为这样的变量:

Get-ADComputer -Filter {name -like '$nameregex' -and Enabled -eq "true"} |
Run Code Online (Sandbox Code Playgroud)

我检查了几个问题(例如,PowerShell AD模块 - 过滤器中的变量),但这对我不起作用.

我尝试了以下内容:

$nameRegex = "chalmw-dm*"
$nameRegex = "`"chalmw-dm*`""
Run Code Online (Sandbox Code Playgroud)

而且在Get-ADComputer与那些'和没有的命令中.

谁能给我一些提示?

Ans*_*ers 10

您不需要变量周围的引号,所以只需更改:

Get-ADComputer -Filter {name -like '$nameregex' -and Enabled -eq "true"}
Run Code Online (Sandbox Code Playgroud)

进入这个:

Get-ADComputer -Filter {name -like $nameregex -and Enabled -eq "true"}
Run Code Online (Sandbox Code Playgroud)

但请注意,filter语句的scriptblock表示法具有误导性,因为该语句实际上是一个字符串,因此最好这样写:

Get-ADComputer -Filter "name -like '$nameregex' -and Enabled -eq 'true'"
Run Code Online (Sandbox Code Playgroud)

相关.也有关系.

和FTR:你在这里使用通配符匹配(运算符-like),而不是正则表达式(运算符-match).