Powershell – Set PasswordNeverExpires sur tous les comptes

Passe tous les comptes d’une OU avec une valeur à ‘PasswordNeverExpires‘ définie.

Un premier script permet de modifier la valeur de l’attribut ‘PasswordNeverExpires ‘ à $true ou $false sur tous les compte d’une OU.

Ce même script log l’état de configuration des compte avant la modification de la valeur.

Import-Module ActiveDirectory
$LogFile= »c:\temp\UsersPWDNeverExpire_$(get-date -Format « yyyyMMddHHmmss »).csv »
$res=@()

$lstUsers=Get-ADUser -filter * -SearchBase « OU=Users,OU=Tests,DC=teddycorp,DC=lab » -Properties PasswordNeverExpires

foreach($user in $lstUsers){
$DataCollect = New-Object System.object
$DataCollect | Add-Member -name ‘UPN’ -MemberType NoteProperty -Value $User.UserPrincipalName
$DataCollect | Add-Member -name ‘SamAccountName’ -MemberType NoteProperty -Value $User.SamAccountName
$DataCollect | Add-Member -name ‘SID’ -MemberType NoteProperty -Value $User.SID
$DataCollect | Add-Member -name ‘DistinguishedName’ -MemberType NoteProperty -Value $User.DistinguishedName
$DataCollect | Add-Member -name ‘PasswordNeverExpiresInitialState’ -MemberType NoteProperty -Value $User.PasswordNeverExpires

Set-ADUser -Identity $User.DistinguishedName -PasswordNeverExpires $true
Get-ADUser -Identity $User.DistinguishedName -Properties PasswordNeverExpires | Select-Object UserPrincipalName,PasswordNeverExpires


$res+=$DataCollect
}


$res | Export-Csv -Path $LogFile -Delimiter « ; » -NoTypeInformation -Encoding UTF8

Ce second script permet de revenir à l’état initial en reconfigurant les comptes utilisateurs à l’aide du fichier de log généré lors de l’exécution du script précedent.

$ImportFile=Import-Csv -Delimiter « ; » -Path $LogFile -Encoding UTF8

foreach($user in $ImportFile){

Write-Host $user.DistinguishedName

if($User.PasswordNeverExpiresInitialState -eq « True »){
Set-ADUser -Identity $User.DistinguishedName -PasswordNeverExpires $true
}elseif($User.PasswordNeverExpiresInitialState -eq « False »){
Set-ADUser -Identity $User.DistinguishedName -PasswordNeverExpires $false
}else{
Write-Host « user: $User.DistinguishedName in error !!! »
}
}

Attention avec les double quotes dans les copier /coller des scriptes, wordpress les interprète. Avous de modifier avec caractère  » ou  » par une vraie double quotes.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *