【问题标题】:Powershell ActiveDirectory module Variable with wildcard not working带有通配符的Powershell ActiveDirectory模块变量不起作用
【发布时间】:2013-12-05 17:56:22
【问题描述】:

为什么下面的 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:\> 

【问题讨论】:

标签: powershell module active-directory


【解决方案1】:

试试这个:

Get-ADComputer -Filter "Name -like '*$Variable*'" -Property *

【讨论】:

    【解决方案2】:

    相当蹩脚,看起来这是 Windows 附带的 Powershell Active-Directory 模块的众多限制之一。在我最初的尝试中,我没有做错任何事。我最终将输出流水线到 where{ } 以过滤它的项目。

    Get-ADComputer -properties Name, OperatingSystem -Filter *| ?{$_.name -like "*$($Variable)*"} |ft Name, OperatingSystem -Wrap -Auto
    

    【讨论】:

    • 直到最近,它不是来自 Microsoft 的 ActiveDirectory 模块的限制。在 Windows 8.1 上的 PowerShell 4.0 下使用 RSAT for Server 2012 R2 时会出现此行为。当我升级时,这个问题破坏了我的一堆脚本。我(和其他人)已经在 TechNet 论坛上发布了这个问题,但只收到了几个“我也是”的回复。
    【解决方案3】:

    这个怎么样:

    $myvar="*888FF*"
    get-adcomputer -filter {name -like $myvar} -property *
    

    这真的很烦人,你希望这能工作,但我猜 -filter 内部有一些奇怪的解析规则

    $myvar="888FF"
    get-adcomputer -filter {name -like "*$myvar*"} -property *
    

    【讨论】:

      【解决方案4】:

      Shay 的解决方案效果很好(至少在 v4 上)

      我还发现 LDAPFilters 也可以!

      get-adcomputer -LDAPFilter "(&(name=$name*)(operatingsystem=server))"

      【讨论】:

        猜你喜欢
        • 2021-08-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多