Você pode usar a seguinte função do PowerShell para executar essa tarefa. um aplicativo de desktop não faria muito sentido na minha opinião
function ForcePasswordChange
{
[CmdletBinding()]
Param
(
[Parameter(Mandatory=$True)]
[string]$ADGroup,
[int]$Changes = "0"
)
Begin
{
Write-Warning "Script start for Group: $ADGroup"
}
Process
{
Try
{
Get-ADUser -Filter * -SearchBase $ADGroup | ForEach {
Set-ADUser -Identity $_.name -ChangePasswordAtNextLogon $true
$Changes++
}
}
Catch [System.Management.Automation.CommandNotFoundException]
{
Throw "Script has to run on a Domain Controller or on a Client with ActiveDirectory PowerShell Module installed. Script disrupted"
}
Catch [System.ArgumentException]
{
Throw "Could not resolve SearchBase (ADGroup) - ADGroup was $ADGroup. Script disrupted"
}
Catch [System.Management.Automation.ParameterBindingException]
{
Write-Error "Could not resolve Name Identity of one or multiple Users in ADGroup. Maybe ADGroup is empty. Script continues"
}
}
End
{
Write-Warning "Script has finished. $Changes Users must change their Password on next logon"
}
}
Basta salvá-lo como ForcePasswordChange.ps1 e pontuá-lo para carregar a função em uma sessão do powershell no seu controlador de domínio
. C:\yourpath\ForcePasswordChange.ps1
Então você pode escrever assim:
ForcePasswordChange -ADGroup "OU=GroupName,OU=Users,DC=DomainPrefix,DC=Domain,DC=com"
Exemplo para um grupo chamado "Powerusers" na OU "Users Europe" no domínio internal.international.de
ForcePasswordChange -ADGroup "OU=Powerusers,OU=Users Europe,DC=internal,DC=international,DC=de"
Você também pode criar uma tarefa agendada que execute esse script com os argumentos corretos a cada trinta dias, e não precisará fazer mais nada.