Private/Add-RandomUsersToAccountOperators.ps1
|
<#
.SYNOPSIS Adds randomly selected demo users to Account Operators. .DESCRIPTION Selects demo users at random, enables their accounts, resets lab passwords, and adds them to the Account Operators group. .COMPONENT Category: Sub Function .FUNCTIONALITY Selects random users, enables them, resets lab passwords, and adds them to Account Operators. #> function Add-RandomUsersToAccountOperators { ################################################################################ ##### ##### ##### Add Random Users To Account Operators and Reset Password ##### ##### ##### ################################################################################ Param( [Parameter(Mandatory)] [string] $TargetOU, [Parameter(Mandatory)] [string] $Server ) $Info = Measure-FunctionRuntime -Begin #Import-Module ActiveDirectory [int]$UserCount = Get-ASConfig -Setting "RandomAccountOperators" $PasswordPlain = Get-ASConfig -Setting "LastPW" #Set-ASConfig -Setting "LastPW" -Value $PasswordPlain # --- Resolve Account Operators (RID 548) --- $AOGroupSID = "S-1-5-32-548" $AOGroup = Get-ADGroup -Identity $AOGroupSID -Server $Server Write-Log -Message " >> Target group resolved: $($ADGroup.Name) ($AOGroupSID)" # --- Select random users from OU --- $Users = Get-ADUser ` -SearchBase $TargetOU ` -SearchScope Subtree ` -Filter * ` -Properties SamAccountName -Server $Server | Get-Random -Count $UserCount $SecurePassword = ConvertTo-SecureString -AsPlainText -Force $PasswordPlain foreach ($User in $Users) { # Reset password Set-ADAccountPassword ` -Identity $User.SamAccountName ` -Reset ` -NewPassword $SecurePassword -Server $Server # Ensure account is enabled Enable-ADAccount -Identity $User.SamAccountName -Server $Server # Add to Account Operators Add-ADGroupMember ` -Identity $AOGroup ` -Members $User.SamAccountName -Server $Server $cname = Convert-FromDNToCN -DistinguishedName $User.DistinguishedName Write-Log -Message " >> User added to Account Operators $cname" } Measure-FunctionRuntime -End -Details $Info } |