为什么下面的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:>
尝试一下:
Get-ADComputer -Filter "Name -like '*$Variable*'" -Property *
很蹩脚,这似乎是Windows附带的Powershell Active Directory模块的众多限制之一。我最初的尝试没有做错什么。我最终将输出通过管道传输到{}的位置,以过滤它的项。
Get-ADComputer -properties Name, OperatingSystem -Filter *| ?{$_.name -like "*$($Variable)*"} |ft Name, OperatingSystem -Wrap -Auto
这个怎么样:
$myvar="*888FF*"
get-adcomputer -filter {name -like $myvar} -property *
这真的很烦人,你会期望它能工作,但filter内部有一些奇怪的解析规则,我想
$myvar="888FF"
get-adcomputer -filter {name -like "*$myvar*"} -property *
Shay的解决方案运行良好(至少在v4上)
我还发现LDAFilter也能工作!
获取广告计算机-LDAPFilter"(&(name=$name*)(操作系统=服务器))"