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