我尝试过滤掉这样的内容:
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 :(得分: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'"
和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}