6

我有一个脚本可以创建一个用户并将密码和用户分配给一个组,但我需要勾选 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")

这有效并且做了它应该做的事情,但有人知道我可以如何设置这两个复选框吗?各种线程建议类似于Set-ADUser -CannotChangePassword:$true但不使用 Active Directory 的东西,这不起作用。

您的建议表示赞赏

保罗

4

3 回答 3

8

今早明白了:-

$objUser.UserFlags = 64 + 65536 # ADS_UF_PASSWD_CANT_CHANGE + ADS_UF_DONT_EXPIRE_PASSWD
于 2013-07-15T14:14:30.417 回答
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()方法。

于 2013-07-13T23:32:48.280 回答
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()
于 2013-07-12T16:01:11.290 回答