Использование переменных в Powershell Get-ADUser -Filter
Может ли кто-нибудь помочь мне в правильном цитировании, мне нужны подстановочные знаки рядом с переменными для имени и фамилии в поиске Get-ADUser -Filter
Я считаю, что мне нужно избегать одинарных кавычек, но не могу получить успешный возврат.
$LastADname = John
$FistADname = Doe
Get-ADUser -Filter "Name -like `*$LastADname`*$FirstADname`*"
Returns: Get-ADUser : Error parsing query: 'Name -like *Doe*John*' Error Message: 'syntax error' at position 12
Это позволяет мне знать, что он разрешил переменную, но не *. Если я заключу все в одинарные кавычки, чтобы двойные кавычки для переменных и *, это не разрешило бы переменные. Как показано ниже
$LastADname = John
$FistADname = Doe
Get-ADUser -Filter 'Name -like "*$LastADname*$FirstADname*"'
Я верю в это, потому что вышеизложенное разрешено, но не произведено. Когда я заменяю текст на var, он дает результаты
Get-ADUser -Filter 'Name -like "*Doe*John*"'
1 ответ
Вам нужно заключить внутреннюю строку фильтра в одинарные кавычки:
Get-ADUser -Filter "Name -like '*$LastADname*$FirstADname*'"
Вам не нужно убегать от
*
персонаж. Вторая попытка с одинарными кавычками
'
упаковка внешней строки не сработала, потому что строки в одинарных кавычках отображаются буквально. Двойные кавычки
"
строки позволяют расширять переменные, использовать escape-последовательности с
`
, и вернуть подвыражения в строке.
См. Этот ответ, который я написал для получения дополнительной информации об использовании
-Filter
эффективно с помощью командлетов RSAT AD.