Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell新ADUser问题与-AccountPassword_Powershell_Dns - Fatal编程技术网

Powershell新ADUser问题与-AccountPassword

Powershell新ADUser问题与-AccountPassword,powershell,dns,Powershell,Dns,我正在尝试添加一个新生列表(来自CSV文件), 当我想添加-AccountPassword时,它可以很好地工作 这是包含-AccountPassword的脚本(Powershell): 为每个学生处理脚本需要很长时间,我得到的错误消息是:此操作返回,因为超时时间已过 用户仍然被创建,但是-Enabled和-ChangePasswordAtLogon仍然被设置为$false,尽管我将其设置为$true Import-Module ActiveDirectory $Users = Import-C

我正在尝试添加一个新生列表(来自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
}
既然我想为新生设置一个默认密码,我该如何解决这个问题


谢谢大家!

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

发件人:

默认情况下,创建用户帐户时不使用密码。如果你 如果提供密码,将尝试设置该密码 但是,由于密码策略限制,此操作可能会失败。用户 帐户仍将被创建,您可以使用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表示学生开始学习的那一年!此外,我还检查了我的域密码限制,设置为“所有用户”(无空用户)的默认密码与域密码限制匹配。谢谢你response@Maude那么,这是否意味着我的代码适用于您?如果是这样的话,请考虑通过点击答案左边的大复选图标来对他的问题进行标记。这将帮助其他有类似问题的人更容易找到它。@Maude P.S>我已在SamAccountName中编辑了“21”。谢谢您的帮助!