Вы можете обработать каждую строку в CSV (myCSV.csv в этом примере) как объект в PowerShell. Во время этого процесса вы можете манипулировать значением каждого столбца (свойства) в соответствии с вашей командой. Вы можете использовать Splatting , чтобы сделать вещи более читабельными и управляемыми.
Import-Csv MyCSV.csv | Foreach-Object {
$Params = @{
GivenName = $_.firstname
Surname = $_.lastname
SamAccountName = $_.username
AccountPassword = $_.password | ConvertTo-SecureString -AsPlainText -Force
Enabled = [bool]$_.enable
PasswordNeverExpires = [bool]$_.PasswordNeverExpires
Name = "{0} {1}" -f $_.firstname,$_.lastname
Path = $_.ou
}
if ([bool]$_.AccountNeverExpires -eq $False) {
$Params.Add(AccountExpirationDate,(Get-Date -Year 2020 -Month 1 -Day 1))
}
New-ADUser @Params
}
Замечания:
- Возможно, вы захотите точно контролировать
UserPrincipalName
. Если это так, вы можете просто добавить его в хэш-таблицу $Params
в предпочитаемом формате. -Name
- обязательный параметр. Поэтому я добавил его в хеш-таблицу. Я использовал оператор форматирования (-f
) для форматирования строки. Вы можете отформатировать его по своему усмотрению. - У вас есть
AccountNeverExpires
, установленный на False
для ряда ваших записей. Это означает, что вам нужно будет передать параметр -AccountExpirationDate
действительный [datetime]
объект. Я использовал January 1, 2020
в примере. Пожалуйста, обновите его до нужного значения. - Команды
*-ADUser
, которые поддерживают параметр пароля, ожидают защищенные строки. Это означает, что вам нужно будет преобразовать обычные текстовые пароли перед передачей их этим параметрам. Значения True
и False
, считанные из файла CSV, читаются как строки. Команды *-ADUser
ожидают, что эти значения будут Boolean
типа. В этих случаях я использовал ускоритель типа [bool]
, чтобы привести эти значения к Boolean
.