public/Reset-Passwords.ps1

Function Reset-Passwords {
    
    param (

    [Parameter(Mandatory=$true,Position=0)]
    [string]$OU,

    [Parameter(Mandatory=$true,Position=0)]
    [string]$NewPwd,

    [switch]$RequireChange = $true


    )


    # Get all the users in the OU
    $Users = Get-ADUser -Filter * -Properties * -SearchBase $OU

    foreach ($User in $Users) {
    
        # Set the users password
        Set-ADAccountPassword -Identity $User.SamAccountName -NewPassword (ConvertTo-SecureString $NewPwd -AsPlainText -Force) -Reset -Verbose    
        # If require change is true then do so
        if ($RequireChange -eq $true) {
            Set-ADUser -Identity $User.SamAccountName -ChangePasswordAtLogon $true
        }
    
    Write-Host "$($User.name)'s password has been updated" -ForegroundColor Green
        
    }
}