【问题标题】:Powershell New-ADUser issue with -AccountPassword-AccountPassword 的 Powershell New-ADUser 问题
【发布时间】:2021-06-04 03:48:21
【问题描述】:

我正在尝试添加新学生列表(来自 CSV 文件), 当我想添加 -AccountPassword 时,它可以正常工作。

这是包含 -AccountPassword 的脚本(Powershell):

脚本需要很长时间来处理每个学生,我收到的错误消息是:此操作返回,因为超时期限已过

用户仍被创建,但 -Enabled 和 -ChangePasswordAtLogon 仍设置为 $false,尽管我将其设置为 $true

Import-Module ActiveDirectory 
$Users = Import-Csv -Delimiter ";" -Path ".\userslist.csv"  
foreach ($User in $Users)  
{  
    $OU = "OU=NewAccts,OU=Students,OU=****,DC=***,DC=com"  
    $Password = $User.password
    $Detailedname = $User.firstname + " " + $User.name
    $UserFirstname = $User.Firstname 
    $AccountName = $User.AccountName
    $SAM =  $AccountName + 21
    $Office = $User.Office
    $Description = $User.Description
    $Email = $User.Email
       
    New-AdUser -Name $Detailedname -SamAccountName $SAM -UserPrincipalName $SAM -DisplayName $Detailedname -GivenName $user.firstname -Surname $user.name -Office $Office -Description $Description -ChangePasswordAtLogon $true -AccountPassword (ConvertTo-SecureString "Test123PWD" -AsPlainText -Force) -Enabled $True -Email $Email -Path $OU
}

这是我删除 -AccountPassword 并改为 -PasswordNotrequired $true

一切正常,所以我知道我的错误消息来自 -AccountPassword

Import-Module ActiveDirectory 
$Users = Import-Csv -Delimiter ";" -Path ".\userslist.csv"  
foreach ($User in $Users)  
{  
    $OU = "OU=NewAccts,OU=Students,OU=****,DC=***,DC=com"  
    $Password = $User.password
    $Detailedname = $User.firstname + " " + $User.name
    $UserFirstname = $User.Firstname 
    $AccountName = $User.AccountName
    $SAM =  $AccountName + 21
    $Office = $User.Office
    $Description = $User.Description
    $Email = $User.Email
   
    New-AdUser -Name $Detailedname -SamAccountName $SAM -UserPrincipalName $SAM -DisplayName $Detailedname -GivenName $user.firstname -Surname $user.name -Office $Office -Description $Description -PasswordNotRequired $True -ChangePasswordAtLogon $true -Enabled $True -Email $Email -Path $OU
}

如何解决这个问题,因为我想为新生设置一个默认密码

谢谢!

【问题讨论】:

    标签: powershell dns


    【解决方案1】:

    强烈建议您开始在需要大量参数的 cmdlet 上使用 Splatting
    对于某些用户,userslist.csv 中的password 字段可能为空。在这种情况下,它要么是 CSV 中的遗漏,要么是为了让该用户不需要密码。 如果您尝试使用空字符串设置 AccountPassword,您将收到错误消息。

    来自the docs

    默认情况下,用户帐户是在没有密码的情况下创建的。如果你 提供密码,将尝试设置该密码 但是,由于密码策略限制,这可能会失败。用户 帐户仍将被创建,您可以使用 Set-ADAccountPassword 来 设置该帐户的密码。为了确保账户 保持安全,用户帐户将永远不会被启用,除非一个有效的 密码已设置或 PasswordNotRequired 设置为 $True。

    给你的问题是:$SAM = $AccountName + 21 是什么意思??

    Import-Module ActiveDirectory 
    
    Import-Csv -Delimiter ";" -Path ".\userslist.csv"  | ForEach-Object {
        $fullName = ('{0} {1}' -f $_.firstname, $_.name).Trim()
        $userParams = @{
            Name                  = $fullName
            SamAccountName        = '{0}21' -f $_.AccountName  # 21 is the year the sudent starts
            UserPrincipalName     = $_.Email   # or construct this: "$($_.AccountName)@yourcompany.com"
            DisplayName           = $fullName
            GivenName             = $_.firstname
            Surname               = $_.name
            Office                = $_.Office
            Description           = $_.Description
            Enabled               = $true
            Email                 = $_.Email
            Path                  = "OU=NewAccts,OU=Students,OU=****,DC=***,DC=com"
        }
        if ([string]::IsNullOrWhiteSpace($_.password)) {
            # no password for this user in the CSV
            $userParams['ChangePasswordAtLogon'] = $false
            $userParams['PasswordNotRequired']   = $true
        }
        else {
            $userParams['AccountPassword']       = ConvertTo-SecureString $_.password -AsPlainText -Force
            $userParams['ChangePasswordAtLogon'] = $true
        }
    
        New-ADUser @userParams
    }
    

    【讨论】:

    • 21 表示学生开始的年份!此外,我确实检查了我的域密码限制,并且默认密码设置为所有用户(没有空用户)确实与域密码限制匹配。谢谢你的回复
    • @Maude 那么,这是否意味着我的代码适合您?如果是这样,请考虑通过单击答案左侧的大复选标记图标将我们的问题标记为“完成”。这将帮助其他有类似问题的人更轻松地找到它。
    • @Maude P.S> 我在 SamAccountName 上编辑了“21”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多