Get-ADComputer返回与查询不同的属性?

时间:2019-07-09 21:27:06

标签: powershell select active-directory

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

如果有帮助,我公司正在使用Powershell 5.1版。

我已经尝试过在“ select-string -Pattern'example'”之后使用管道传递Name,但是它只是不返回任何内容,我假设它认为我在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属性。如果我两个都退,那会更好。

1 个答案:

答案 0 :(得分:1)

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

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

如果您在“名称”中寻找字符串example,则可以过滤“名称”​​并仍然输出名称。

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

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

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