我有一个创建用户的脚本并将密码和用户分配给一个组,但是我需要勾选2个复选框 - “用户无法更改密码”和“密码永不过期”,但对于我的生活我无法找到如何做到这一点。
到目前为止我的脚本是: -
# Create User and add to IGNITEWEBUSERS Group
$user = $domain
# If more then 15 chars trim to just 15 chars
$user = $user.substring(0, 15)
$user = $user + "_web"
# Generate Random Complex Password
# Generate a password with 2 non-alphanumeric character.
$Length = 10
$Assembly = Add-Type -AssemblyName System.Web
$RandomComplexPassword = [System.Web.Security.Membership]::GeneratePassword($Length,2)
$password = $RandomComplexPassword
$group = 'IGNITEWEBUSERS'
$objOu = [ADSI]"WinNT://$computer"
$objUser = $objOU.Create("User", $user)
$objUser.setpassword($password)
$objUser.SetInfo()
$objUser.description = $domain + " IIS User"
$objUser.SetInfo()
$OBjOU = [ADSI]"WinNT://$computer/$group,group"
$OBjOU.Add("WinNT://$computer/$user")
这有效并且应该做什么,但是有人知道如何设置这2个复选框?
各种线程提示类似于Set-ADUser -CannotChangePassword:$true
,但我没有使用Active Directory,但这不起作用。
您的建议表示赞赏
保
答案 0 :(得分:8)
今天早上弄清楚了: -
$objUser.UserFlags = 64 + 65536 # ADS_UF_PASSWD_CANT_CHANGE + ADS_UF_DONT_EXPIRE_PASSWD
答案 1 :(得分:4)
设置 useraccountcontrol 属性。您可以在此处找到useraccountcontrol标志列表:http://support.microsoft.com/kb/305144
添加所需标志的值(NORMAL_ACCOUNT = 512,PASSWD_CANT_CHANGE = 64,DONT_EXPIRE_PASSWORD = 65536),共计66112,并将属性设置为该数字:
$obUser.useraccountcontrol = 66112
顺便说一下,在设置了你想要设置的所有属性之后,你只需要在结束时调用 SetInfo()方法一次。
答案 2 :(得分:0)
使用WMI获取用户帐户:
# Use this filter so WMI doesn't spend forever talking to domain controllers.
$user = Get-WmiObject Win32_UserAccount -Filter ("Domain='{0}' and Name='{1}'" -f $env:ComputerName,$Username)
$user.PasswordChangeable = $false
$user.PasswordExpires = $false
$user.Put()