Использование переменных в 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.

Другие вопросы по тегам