无法使用包含变量和通配符的过滤器获取AD-ADComputer

时间:2017-07-12 13:26:22

标签: powershell ldap

我无法将通配符(*字符)附加到变量的末尾,该变量在-Filter-LDAPFilter中包含Get-ADcomputer的字符串PowerShell中的1}}。

我尝试了一些我在下面强调的解决方案,但我无法开始工作。 $compName将是我尝试添加通配符的变量。

  1. 我尝试的第一件事是在常规过滤器上进行简单连接,因为它只是一个字符串,我不能在最后添加外卡吗?
  2. $compArray += Get-ADComputer -Filter 'Name -eq "$compName' + '*"' -SearchBase "OU=Office,DC=workplace,DC=org" -ResultSetSize 5000 | Select -Exp Name;

    1. 我尝试的第二件事就是在我的变量的两边添加两个*,因为我看到这对于外卡搜索来说似乎很常见,但唉似乎没有提供解决方案
    2. $compArray += Get-ADComputer -Filter 'Name -eq "*$compName*"' -SearchBase "OU=Office,DC=workplace,DC=org" -ResultSetSize 5000 | Select -Exp Name;

      1. 由于这些解决方案都不起作用,我决定改用-LDAPFilter。我在LDAP中尝试的第一件事是另一个连接。
      2. $compArray += Get-ADComputer -LDAPFilter '(name=$compName' + '*)' -SearchBase "OU=Office,DC=workplace,DC=org" -ResultSetSize 5000 | Select -Exp Name;

        1. 我之后尝试过的尝试类似于尝试编号2,我将*放在整个变量周围,但这似乎也没有用。
        2. $compArray += Get-ADComputer -LDAPFilter '(name=*$compName*)' -SearchBase "OU=Office,DC=workplace,DC=org" -ResultSetSize 5000 | Select -Exp Name;

          1. 由于没有太重复,我还尝试在前四次尝试中将$compName与其余字符串分开,因此我们将在此处使用第一个作为示例。
          2. $compArray += Get-ADComputer -Filter 'Name -eq "' + $compName + '*"' -SearchBase "OU=Office,DC=workplace,DC=org" -ResultSetSize 5000 | Select -Exp Name;

            1. 第六次尝试是事情变得更有趣但我也非常确定我没有正确实施这种方法。我偶然发现了this post on techncet并认为我试一试。
            2. $compArray += Get-ADComputer -Filter *| where {$_.name -match "$compName[0-9][0-9][0-9][0-9]"} -SearchBase "OU=Office,DC=workplace,DC=org" -ResultSetSize 5000 | Select -Exp Name;

              上述方法需要注意的几点,我不清楚$_来自哪里,这可能是导致某些问题的原因。另一个是,因为这种方法使用某种形式的正则表达式,我认为我可以搜索我尝试使用通配符的内容,这是一个4位数的系列,但似乎没有帮助。

              1. 我也尝试使用where-object,但也失败了。
              2. $compArray += Get-ADComputer where-object 'Name -like "*$compName*"' -SearchBase "OU=Office,DC=workplace,DC=org" -ResultSetSize 5000 | Select -Exp Name;

                正如我上面所提到的,我不确定为什么我的任何尝试都没有起作用,因此我在这里提出这个问题。 使用变量和通配符尝试Get-ADComputer时,我做错了什么?我只需要其中一个就可以工作,所以没有人需要弄清楚所有这些问题但是如果你想要自由。

1 个答案:

答案 0 :(得分:2)

使用-eq运算符,而不是与-like和通配符进行比较。 -eq查找完全匹配,但不处理通配符; -like确实:

Get-ADComputer -Filter "Name -like '*$ComputerName*'" -SearchBase ...