一次更改活动目录中的多个用户密码

时间:2017-02-15 14:45:36

标签: powershell cmd coldfusion

是否可以一次更改多个用户的活动目录密码?我可以制作一个用户名列表,并一次性给他们所有相同的密码,如下所示?或者这样的事情不可能?

<cfset usernames = 'Sta1, Sta2, Sta3, Sta4, Sta5'>
<cfset password = 'newpassword17!'>

<cfloop list="#usernames#" index="username">
<cfexecute
    name="c:\windows\system32\cmd.exe"
    arguments="/c net user #username# #password# /domain"
    outputfile="C:\Users\administrator\Desktop\test.txt"
    timeout="90">
</cfexecute>
</cfloop>

1 个答案:

答案 0 :(得分:1)

OP正在研究ColdFusion解决方案,但确实在评论中请求了这个PowerShell示例。所以,请不要给出负面评价,因为这与OP请求不符。

@DavidBrierton,请在您的问题中添加PowerShell标记,以便其他人可以找到这个答案。

请注意,此PowerShell脚本适用于PowerShell的现代实现。我在PowerShell 5.1上测试了它,但它可能适用于旧版本的PowerShell。如果您使用的是较旧的Windows Server,则可能需要调整“安装RSAT-AD-PowerShell功能”行。如果需要,我在Windows 7到Windows 2012 R2中包含了安装说明的URL。

另一个注意事项:PowerShell升级是免费的,您可以通过在此处获取软件升级到版本5.1:https://www.microsoft.com/en-us/download/details.aspx?id=54616

此示例中的第一行代码将显示已安装的PowerShell版本。

#display your version of PowerShell
$PSVersionTable.PSVersion

#install the RSAT-AD-PowerShell feature on Windows Server 2012 R2
#Source: https://4sysops.com/archives/how-to-install-the-powershell-active-directory-module/
Add-WindowsFeature RSAT-AD-PowerShell

# create array of usernames
$arrUserNames = @("Sta1", "Sta2", "Sta3", "Sta4", "Sta5")

# assign variable with new password
$password = "newpassword17!"

# loop over usernames and assign a new password
($arrUserNames).split(" ",[StringSplitOptions]'RemoveEmptyEntries') | foreach {
    Write-Host "Changing password for: $_"
    Set-ADAccountPassword -Identity $_ -Reset -NewPassword (ConvertTo-SecureString -AsPlainText $password -Force)
}