Создать пользователя с «пароль никогда не истекает» в PowerShell - PullRequest
0 голосов
/ 01 октября 2019

Я хочу создать много пользователей в моей AD с помощью файла CSV и скрипта PowerShell, но я не могу найти, как создать пользователя с аргументами «PasswordNeverExpire» и «пользователь активен / неактивен».

Мой CSV:

enter image description here

Ответы [ 2 ]

1 голос
/ 01 октября 2019

Вы можете создать учетную запись и использовать следующее

Set-ADUser -Identity <name> -PasswordNeverExpires $true

, при этом пароль учетной записи никогда не истечет, если вы используете цикл для создания учетной записи, вы можете добавить ее в нее.

0 голосов
/ 01 октября 2019

Вы можете обработать каждую строку в 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.
...