【发布时间】:2020-01-30 13:11:30
【问题描述】:
我想使用 CSV 文件和 PowerShell 脚本在我的 AD 中创建大量用户,但我不知道如何使用参数“PasswordNeverExpire”和“用户处于活动/非活动状态”来创建用户。
我的 CSV:
【问题讨论】:
标签: powershell active-directory passwords
我想使用 CSV 文件和 PowerShell 脚本在我的 AD 中创建大量用户,但我不知道如何使用参数“PasswordNeverExpire”和“用户处于活动/非活动状态”来创建用户。
我的 CSV:
【问题讨论】:
标签: powershell active-directory passwords
您可以创建帐户并使用以下内容
Set-ADUser -Identity <name> -PasswordNeverExpires $true
这会将帐户的密码设置为永不过期,如果您使用循环创建帐户,则可以将其添加到其中。
【讨论】:
您可以将 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 是必需参数。所以我把它添加到哈希表中。我使用format operator (-f) 来格式化字符串。您可以根据需要对其进行格式化。AccountNeverExpires 设置为False。这意味着您需要将参数-AccountExpirationDate 传递给有效的[datetime] 对象。我在示例中使用了January 1, 2020。请将此更新为适当的内容。*-ADUser 命令需要安全字符串。这意味着您需要先转换纯文本密码,然后再将其传递给这些参数。True 和 False 值将作为字符串读取。 *-ADUser 命令期望这些值是 Boolean 类型。在这些情况下,我使用[bool] 类型加速器将这些值转换为Boolean。【讨论】:
一个对我有用的简单解决方案是这样的:
$password = ConvertTo-SecureString "passwd123" –AsPlainText –Force
$user = "userxyz"
New-ADUser -Name $user -AccountPassword $password
Set-ADUser $user -PasswordNeverExpires $true
【讨论】: