POWERSHELL - Проверьте, существует ли samaccountname, если да, используйте другой метод - PullRequest
0 голосов
/ 22 апреля 2020

)

Я новый программист, и сейчас я нахожусь в стажировке. Меня попросили написать скрипт, в котором они создают запись в AD. До сих пор было довольно просто создать функцию для простого создания пользователя:

function getSamAccountName([string]$givennname, [string]$surname)
        {
            return ($givennname.Substring(0, 2) + $surname.Substring(0, 2)).ToLower()

        }

Теперь они хотят добавить, что если этот ADUser уже существует (из-за имитационных имен), этот скрипт должен использовать следующие шаблоны:

Версия 1: первые 4 буквы (фамилия)

Версия 2: первые 2 буквы (фамилия) Первые 2 буквы (фамилия)

Версия 3: первые 2 Буквы (Фамилия) Последние 2 буквы (Фамилия)

Версия 4 Если фамилия имеет только 3 буквы: первые 3 буквы (фамилия) и первая фамилия

Все, что я мог найти в Google , был из CSV-файлов или что-то, что я просто не могу понять; D

Вот недостающая часть, извините; D

function getSamAccountName([string]$givennname, [string]$surname)
        {
            $SANarray = @(

                        $SANv1 = ($givennname.Substring(0, 4))
                        $SANv2 = ($surname.Substring(0, 2) + $givenname.Substring(0, 2)).ToLower()
                        $SANv3 = ($givennname.Substring(0, 2) + $surname.Substring(0, -2)).ToLower()
                        $SANv4 = ($givennname.Substring(0, 3) + $surname.Substring(0, 1)).ToLower()
            )


            foreach ($san in $SANarray)
            {
                if (get-aduser -Identity $SAN -eq $SANv1) { Write-Verbose "SANv1 already Taken" }
                else { return $SANv1 }
                if (get-aduser -Identity $SAN -eq $SANv2) { Write-Verbose "SANv2 already Taken" }
                else { return $SANv2 }
                if (get-aduser -Identity $SAN -eq $SANv3) { Write-Verbose "SANv3 already Taken" }
                else { return $SANv3 }
                if (get-aduser -Identity $SAN -eq $SANv4) { Write-Verbose "SANv4 already Taken" }
                else { return $SANv4 }
            }

Это ошибка, которую я получаю:

    ERROR: You cannot call a method on a null-valued expression.
AutomatedTicked.ps1 (116, 7): ERROR: At Line: 116 char: 7
ERROR: + ...             $SANv2 = ($surname.Substring(0, 2) + $givenname.Substring ...
ERROR: +                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ERROR:     + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
ERROR:     + FullyQualifiedErrorId : InvokeMethodOnNull
ERROR:
ERROR: ConvertTo-SecureString : Cannot bind argument to parameter 'String' because it is null.

Я надеюсь, что некоторые приятные люди могут помочь мне;))

(не стесняйтесь задавать любые вопросы, потому что я не знаю, достаточно ли этой информации;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...