为什么下面的get-adcomputer命令行没有返回任何结果?当cmdlet不能容纳PowerShell语法时,这真的很烦人。至少这就是它在这里发生的事情。如果我执行写输出,它会准确显示我想要在命令行中插入的内容。但是,当我将其与get-adcomputer cmdlet一起使用时,不会返回任何结果。
PS: C:\> $Variable = "88FF"
PS: C:\> write-output "*$($Variable)*"
*88FF*
PS: C:\> Get-ADComputer -Filter {Name -like "*$($Variable)*"} -Property *
PS: C:\>
PS: C:\> Get-ADComputer -Filter {Name -like "*88FF*"} -Property *
computer1
computer2
computer3
我尝试了很多不同的变体......甚至包括通过转义它们来为变量添加文字引号。我一直在拉着我的头发试图找出一些不到10秒的事情。
PS: C:\> $Variable = "`"*888FF*`""
PS: C:\> $Variable
"*88FF*"
PS: C:\> PS: C:\> Get-ADComputer -Filter {Name -like $Variable} -Property *
PS: C:\>
编辑:我也尝试过以下相同的结果:
PS: C:\> Get-ADComputer -Filter {Name -like '*$Variable*'} -Property *
PS: C:\>
答案 0 :(得分:3)
尝试一下:
Get-ADComputer -Filter "Name -like '*$Variable*'" -Property *
答案 1 :(得分:1)
相当蹩脚,看起来这是Windows附带的Powershell Active-Directory模块的众多限制之一。我原来的尝试没有做错任何事。我最终将输出管道输出到{}来过滤它的项目。
Get-ADComputer -properties Name, OperatingSystem -Filter *| ?{$_.name -like "*$($Variable)*"} |ft Name, OperatingSystem -Wrap -Auto
答案 2 :(得分:0)
这个怎么样:
$myvar="*888FF*"
get-adcomputer -filter {name -like $myvar} -property *
这真的很烦人,你会希望这可以工作但是-filter内部有一些奇怪的解析规则我想
$myvar="888FF"
get-adcomputer -filter {name -like "*$myvar*"} -property *
答案 3 :(得分:0)
Shay的解决方案非常有效(至少在第4版)
我还发现LDAPFilters也会起作用!
get-adcomputer -LDAPFilter“(&(name = $ name *)(operatingsystem = server ))”