使用" -Filter"用变量

时间:2014-09-19 09:35:55

标签: powershell filter

我尝试过滤掉这样的内容:

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命令与那些'和没有。

有人能给我一些提示吗?

4 个答案:

答案 0 :(得分:9)

您不需要围绕变量引用,只需更改此内容:

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

进入这个:

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

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

Get-ADComputer -Filter "name -like '$nameregex' -and Enabled -eq 'true'"

RelatedAlso related

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

答案 1 :(得分:1)

添加双引号

$nameRegex = "chalmw-dm*"

-like "$nameregex"-like "'$nameregex'"

答案 2 :(得分:0)

或者

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

如果您想使用通配符。

答案 3 :(得分:0)

尝试一下:

$NameRegex = "chalmw-dm"  
$NameR = "$($NameRegex)*"
Get-ADComputer -Filter {name -like $NameR -and Enabled -eq $True}