PowerShell будет расширять переменные внутри кавычек, только если вы используете двойные кавычки.Это описано в документации о правилах цитирования :
Когда вы заключаете строку в двойные кавычки (строка в двойных кавычках), имена переменныхкоторым предшествует знак доллара ($), заменяются значением переменной
Вы можете проверить это в командной строке 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*"
.