Синтаксическая ошибка Get-ADUser при поиске по имени и фамилии - PullRequest
0 голосов
/ 05 октября 2018

У меня есть функция ниже, но я получаю синтаксическую ошибку в строке 12 при ее запуске.

Если я изолирую команду Get-ADuser в Powershell ISE и передам ей имя, используя тот же код разделения и т. Д., Он возвращает ожидаемый пользовательский объект.Однако я знаю, что выполнение кода на моей локальной машине может немного отличаться от моего сценария, поскольку он устанавливает удаленный pssession для получения командлетов Exchange для другой части сценария.

Я также пробовалпара вариантов:

$firstlast = get-aduser -server $adDomainControllerHostName -filter {sn -like $names[1] -and givenname -like $names[0]}
$firstlast = get-aduser -server $adDomainControllerHostName -filter {GivenName -like $fn -and Surname -like $sn}

Функция вызывается так:

$ADProps.manager = getManagerSAMAccountName -manager $ADProps.manager -adDomainControllerHostName $DC;

$ADProps - это массив параметров активного каталога, таких как GivenName, sn, samAccountName, title, Department,менеджер и т. д.

Функция:

function getManagerSAMAccountName($manager, $adDomainControllerHostName){
    if ($manager.trimEnd() -eq "") {
        Write-Host ("*** WARNING *** : Manager name not provided.")
        return ""
    }
    if ((test-user -samaccountname $manager -addomaincontrollerhostname $adDomainControllerHostName)) {
        return $manager
    } else {
        $names = $manager.split("\s+")
        $fn = $names[0]
        $sn = $names[1]
        if ($names -is [system.array]) {
            $firstlast = get-aduser -server $adDomainControllerHostName -filter {(surname -eq $sn) -and (givenname -eq $fn)}

            if ($firstlast -ne $null -and !($firstlast -is [array]) ) {
                return $firstlast.samAccountName
            }

            $lastfirst = get-aduser -filter {(surname -eq $fn) -and (givenname -eq $sn)}
            if ($lastfirst -ne $null -and !($lastfirst -is [array]) ) {
                return $lastfirst.samAccountName
            }
        }
        OutputLog("*** Warning: Manager name " + $manager + " appears to be ambiguous or invalid. Please provide a user id instead, such as ... Will try using the template's manager instead.")
        return ""
    }       
}

Строка с ошибками:

$firstlast = get-aduser -server $adDomainControllerHostName -filter {(surname -eq $sn) -and (givenname -eq $fn)}

Get-ADUser: Ошибка при разборе запроса: '(GivenName like $fn) -and (Фамилия как $ sn) '.Сообщение об ошибке: «синтаксическая ошибка» в позиции «12».

1 Ответ

0 голосов
/ 05 октября 2018

Я понял это с помощью:

$firstlast = get-aduser -server $adDomainControllerHostName -filter "(surname -eq '$($sn)') -and (givenname -eq '$($fn)')"

Незначительные изменения синтаксиса, такие как удаление {} вокруг него, замена на кавычки и использование $ () для окружения переменных

...