Добавление дополнительных советов.
В исходном коде вы присваивали неправильные значения. Как уже упоминали несколько участников (см. @Vad Answer ) $ Пользователи были бы нулевыми в представленном вами коде. Имеет смысл, что может привести к ошибке, которая конкретно ссылается на нулевое значение. Ошибка очень буквальная ConvertTo-SecureString не примет нулевое значение для параметра -String.
Вы использовали итерационную переменную $ User, но сделали переменные назначения, такие как:
$Password = $Users.password
$ User s (обратите внимание на "s") будет нулевым в вашем образце, и вы должны вместо этого использовать $User.password
!
Теперь, если вы все это сделали и все еще получаете ошибку. Мой совет - сделать шаг назад и проверить данные перед выполнением New-ADUser
. Я бы сначала прокомментировал New-ADUser
. Затем вы можете выполнять проверки, такие как:
$ADUsers = Import-Csv C:\Users\Deng\Desktop\newusers.csv
$ADUsers | Where-Object($_.Password -eq $null) | Format-Table
Это даст вам все объекты с нулевым свойством пароля. Это необходимо исправить, прежде чем пытаться использовать содержимое в качестве входных данных для New-ADUser
.
Примечание. Вы также можете использовать Excel для такого рода проверки.
Пароль - только один из свойства. Я бы повторил тест со ссылкой на другие свойства в предложении Where{}
. Вы должны убедиться, что данные полностью чисты!
Оригинальные комментарии, дополняющие другие ответы:
Я думаю, что на этот вопрос уже дан ответ, но для удобства чтения я думаю, что это хорошо сценарий использования для разбивки параметров.
Непроверенный пример:
$ADUsers = Import-Csv C:\Users\Deng\Desktop\newusers.csv
foreach ($User in $ADUsers)
{
$Params =
@{
samAccountName = $User.username
UserPrincipalName = ($User.username + '@aptushealth.com')
GivenName = $User.FirstName
SurName = $User.LastName
Name = ($User.FirstName + ' ' + $User.lastname)
DisplayName = ($User.lastname + ' ' + $User.FirstName)
Enabled = $true
Path = $User.ou
AccountPassword = (ConvertTo-SecureString $User.password -AsPlainText -Force)
ChangePasswordAtLogon = $false
}
New-ADUser @Params
}
Это спасает вас от выхода из обратного тика, который обычно считается опасным.