)
Я новый программист, и сейчас я нахожусь в стажировке. Меня попросили написать скрипт, в котором они создают запись в 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.
Я надеюсь, что некоторые приятные люди могут помочь мне;))
(не стесняйтесь задавать любые вопросы, потому что я не знаю, достаточно ли этой информации;)