计算机描述查询

时间:2018-11-15 14:53:59

标签: powershell active-directory

好吧,我对语法一无所知。图。如果有人可以用另一双好的眼睛帮助我,我将不胜感激。下面是我的脚本,下面是返回我要寻找的值的那根班轮。该脚本不会返回任何内容。

脚本

$BBUIDS = Get-Content 'C:\working\ad\Userstest.txt'

ForEach ($Name in $BBUIDS)
{
Get-ADComputer -Filter 'Description -like $("$Name")' -Properties *  -SearchBase "OU=Win10,OU=Laptops,OU=Computers,OU=MYDOMAIN" | Select-Object CN
}

单线工作

Get-ADComputer -Filter 'Description -like "USERNAMEHERE"' -Properties * -SearchBase "OU=Win10,OU=Laptops,OU=Computers,OU=MYDOMAIN" | Select-Object CN

3 个答案:

答案 0 :(得分:1)

仅当您使用双引号时,PowerShell才会在引号内扩展变量。关于quoting rules的文档对此进行了描述:

  

当您将字符串用双引号引起来(用双引号引起来的字符串)括起来时,前面带有美元符号($)的变量名将替换为变量的值

您可以在PowerShell提示中对此进行测试:

$Name = "username"
'This is wrong: $Name'
"This is right: $Name"

输出将是:

This is wrong: $Name
This is right: username

您会注意到,PowerShell甚至会在使用双引号而不是单引号时突出显示$Name

因此,您需要这样的东西:

Get-ADComputer -Filter "Description -like '$Name'" -Properties *  -SearchBase "OU=Win10,OU=Laptops,OU=Computers,OU=MYDOMAIN" | Select-Object C

双引号内的单引号可以。您只需要将外部引号作为双引号即可。

或者,

Get-ADComputer -Filter {Description -like "$Name"} -Properties * -SearchBase "OU=Win10,OU=Laptops,OU=Computers,MYDOMAIN" | Select-Object CN

此外,我注意到您正在使用-like,但是您没有使用任何通配符(*)。 Description 完全与用户名匹配吗?如果是这样,可以使用-eq代替-like来获得更好的性能。

如果不完全匹配,则应该使用"*$Name*"

答案 1 :(得分:0)

更改:

Get-ADComputer -Filter 'Description -like $("$Name")' ...

收件人:

$Name = "*$Name*"
Get-ADComputer -Filter {Description -like $Name} ...

根据评论进行编辑

$BBUIDS = Get-Content 'C:\working\ad\Userstest.txt'
ForEach ($Name in $BBUIDS) { 

    $Name = "*$Name*" 
    Get-ADComputer -Filter {Description -like $Name} -Properties * -SearchBase "OU=Win10,OU=Laptops,OU=Computers,MYDOMAIN" | Select-Object CN 
} 

答案 2 :(得分:0)

您可以使用其中任何一个,尽管第一个更有效

Get-ADComputer -Filter {Description -like "*$Name*"} -Properties *  -SearchBase "OU=Win10,OU=Laptops,OU=Computers,OU=MYDOMAIN" | Select-Object CN

Get-ADComputer -Filter * -Properties *  -SearchBase "OU=Win10,OU=Laptops,OU=Computers,OU=MYDOMAIN" |where-object {$_.Description -like "*$Name*"} | Select-Object CN