【问题标题】:Get-ADComputer to return a different property than queried?Get-ADComputer 返回与查询不同的属性?
【发布时间】:2019-11-19 11:48:20
【问题描述】:

我正在使用 Get-ADComputer 在我的域中搜索 Location 属性中的特定字符串。但是,当我找到它时,我想返回找到该字符串的 Name 属性。

我的公司正在使用 Powershell 5.1 版,如果这有影响的话。

我已经在“select-string -Pattern 'example'”之后尝试了管道名称,但它根本没有返回任何内容,我认为它认为我正在寻找 Location 中的属性而不是 Get-ADComputer 结果。答案可能是有人告诉我将整个 Get-ADComputer 存储为变量,但我不确定 Powershell 变量的数据限制是多少,而且似乎我会解析相当多的数据。

Get-ADComputer -properties Location -SearchBase "OU=E, DC=M" -filter 'Name -like "*"' | select Location | select-string -pattern "example"

我当前的结果是整个 Location 属性,但我想要的结果是搜索位置时的 Name 属性。如果我能同时返回就更好了。

【问题讨论】:

    标签: powershell select active-directory


    【解决方案1】:

    如果您在 location 中查找字符串 example,您可以根据 location 进行过滤,然后输出名称。

    Get-ADComputer -SearchBase "OU=E, DC=M" -Filter "location -like '*example*'" | Select-Object Name
    

    如果您在 Name 中查找字符串 example,您可以过滤 Name 并仍然输出名称。

    Get-ADComputer -SearchBase "OU=E, DC=M" -Filter "Name -like '*example*'" | Select-Object Name
    

    如果要输出更多的属性,包括位置和名称,则需要添加-properties 开关来处理位置。

    Get-ADComputer -Properties location -SearchBase "OU=E, DC=M" -Filter "Name -like '*example*'" | Select-Object Name,location
    

    如果您要在 Get-ADComputer 命令默认输出的任何属性中查找字符串 example,那么您将需要类似以下内容:

    Get-ADComputer -Properties location -SearchBase "OU=E, DC=M" -Filter * | Where-Object { $_ | Out-String | Select-String -pattern "example"}
    

    解释:

    Select-Object 将输出具有您选择的属性的自定义对象。 AD 命令上的-Filter 提供的运算符有限。如果您正在寻找一个简单的字符串,知道哪个属性包含该字符串,但不知道该字符串在字符串中的位置,请使用-like 运算符。 * 字符用于通配符。 -Filter 几乎总是比管道更快,所以如果可以的话,你应该使用它。

    Where-Object { $_ } 处理管道中的当前对象 ($_),其中包括通过管道传输到命令中的所有属性。如果你只想比较单个属性,那么$_应该变成$_.propertyname

    【讨论】:

    • 哇,谢谢你简化了我的疯狂。在过去的八个小时里,我一直盯着屏幕,似乎想让我的生活变得更复杂 103924901x。你是“炸弹”
    猜你喜欢
    • 2018-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-13
    • 2013-06-14
    • 2019-01-06
    相关资源
    最近更新 更多