Я ищу ваши мысли об оптимальном способе сделать это.
Цель состоит в том, чтобы просто найти данного пользователя на основе различных возможных входных данных.
Возможны следующие варианты:
$input = "John,Smith"
$input = "John Smith"
$input = "John Smith(ext)"
$input = "Smith,John"
$input = "Smith John"
$input = "Smith John(ext)"
Мое рабочее решение:
if ($input -like "*(*" ) {
$input = $input -replace '\([^\)]+\)'
}
if ($input -like "*,*"){
$FullName = $input -split ","
}
elseif ($input -like "* *"){
$FullName = $input -split " "
}
get-ADUser -Filter " ( ( (GivenName -like '$($FullName[0])*') -and (SurName -like '$($FullName[1])*') ) -or ( (SurName -like '$($FullName[0])*') -and (GivenName -like '$($FullName[1])*') ) ) "
Итак, в основном происходит:
-Если входные данные содержат круглые скобки, удалите их и то, что находится между ними.
-Если вход содержит запятую, разделите строку на этом.
-Если вход содержит пробел, разделите строку на этом.
-Get-AdUser, фильтрация (GivenName и Surname) ИЛИ(Фамилия и Имя)
, поскольку я не знаю, в каком порядке они будут.
Работает нормально, как есть, но мне всегда любопытно найти оптимальный путь.
У вас есть что предложить в этом сценарии?Большое спасибо за ваш вклад.