【问题标题】:How can I get all partial matches using Get-ADComputer filter?如何使用 Get-ADComputer 过滤器获取所有部分匹配项?
【发布时间】:2017-02-17 13:17:28
【问题描述】:

我有以下 PowerShell 脚本

$server = Get-ADComputer -filter {name -like $computerhost}
write-host $server.name

它为我提供了名称中包含 $computerhost 的 ADComputer。

例子:

$computerhost = linuxserver

匹配的计算机名输出:“linuxserver01”


但如果计算机名称适合 $computerhost,我实际上想要 ADComputer。因此,如果 $computerhost 是“asdf”,我想获得名称为“a”或“as”或“asd”或“asdf”的计算机,而不是“asda”

例子:

$computerhost = linuxserver (new)

匹配的计算机名输出:“linuxserver”


我不知道如何以这种方式使用通配符。

【问题讨论】:

  • 但我实际上想要 ADComputer,它适合 $computerhost。 我实际上不知道你的意思是什么?您只想从$computerhost 中搜索部分名称?那你如何决定要删除什么?
  • 如果 AD 中的计算机名称适合 $computerhost。因此,如果 $computerhost 是“asdf”,我想获得名称为“a”或“as”或“asd”或“asdf”的计算机,而不是“asda”。

标签: powershell active-directory wildcard


【解决方案1】:

感谢您通过 cmets 进行澄清。我认为这可能是您正在寻找的:

Get-ADComputer -filter * | where-object { $computerhost -like "*$($_.name)*" }

例如(我在这里使用 $computers 代替 get-adcomputer):

$computers = 'a','as','asd','asdf','asda'
$computerhost = 'asdf'

$computers | where-object { $computerhost -like "*$_*" }

返回:

一个

作为

asd

asdf

【讨论】:

  • 感谢您的回答。如果我有 Active Directory 之外的所有计算机的列表,则此方法有效。我是否必须创建一个包含 AD 中所有计算机的列表,或者是否有一种简单的方法可以直接使用 AD 执行此操作?
  • @Dave494 这就是这个答案中第一行代码的用途。第二个是概念证明
【解决方案2】:

如果您正在寻找与您的字符串 $computerHost 的部分匹配项,则过滤器将无法处理该问题,因为它无法正确转换为 LDAP 查询。返回选择集中的所有计算机后,您必须处理该过滤器。如果你有一个庞大的计算机基础,你可以像-SearchScope 这样的参数来减少它。最简单的方法是使用.contains()

Get-ADComputer -filter * | Where-Object{$computerhost.contains($_.name)}

需要小心,因为.contains() 区分大小写。您可以做的一件事是强制您的字符串使用相同的大小写以消除该问题。

Where-Object{$computerhost.ToUpper().contains($_.name.toUpper())}

也可以使用-match operatore,只是要注意它支持正则表达式。这应该不是问题,但如果您的计算机名称有连字符,则需要对其进行转义。

Where-Object{$_.name -match $computerhost}

【讨论】:

  • 感谢马特的回答。我只是在现有的计算机上尝试了这个,并在其中添加了 asdf。没用。在没有添加任何东西的情况下使用现有计算机进行了尝试。没用。我在这里做错了吗?
  • 不用了,已经搞定了。必须这样做:Get-ADComputer -filter * | where-object { $computerhost -like "*$($_.name)*" } 还是谢谢你
猜你喜欢
  • 1970-01-01
  • 2012-07-16
  • 2019-04-11
  • 2018-11-12
  • 1970-01-01
  • 1970-01-01
  • 2019-01-06
  • 1970-01-01
相关资源
最近更新 更多