我正在使用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属性。如果我两个都退,那会更好。
答案 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
。