Active Directory’de Şifre Bitiş Tarihini Doğru Okumak: msDS-UserPasswordExpiryTimeComputed

Helpdesk’in en sık karşılaştığı “Şifrem çalışmıyor, süresi dolmamıştı?” türü taleplerde, çoğu zaman pwdLastSet’e bakmak yanlış yönlendirir. Çünkü pwdLastSet sadece son değişim zamanını söyler; şifrenin tam olarak ne zaman biteceğini söylemez. Bunun doğru ve tartışmayı bitiren yolu, AD’nin hesaplayıp sunduğu msDS-UserPasswordExpiryTimeComputed attribute’udur.

Neden pwdLastSet Yetmez?

pwdLastSet: Şifrenin en son ne zaman değiştirildiğini gösterir.Şifre politikasının (domain policy veya Fine-Grained Password Policy) parametreleri (maksimum şifre yaşı, minimum yaş vb.) bu tarih üzerinde hesaplanır.Gerçek bitiş tarihini hesaplamak için tüm bu kurallar ve olası DC farkları dikkate alınmalıdır.Doğru yanıt: msDS-UserPasswordExpiryTimeComputedAD’nin kendisinin hesapladığı net bitiş tarihi.

msDS-UserPasswordExpiryTimeComputed Kullanım örnekleri

1- Tüm kullanıcıları şifre bitiş tarihine göre sırala


Get-ADUser -Filter * -Properties msDS-UserPasswordExpiryTimeComputed, PasswordNeverExpires |
Select-Object SamAccountName,
@{Name="PasswordExpiryDate"; Expression={ 
    if ($_.PasswordNeverExpires) { $null }
    elseif ($_. 'msDS-UserPasswordExpiryTimeComputed') { 
        [datetime]::FromFileTime($_. 'msDS-UserPasswordExpiryTimeComputed') 
    } else { $null }
}} |
Sort-Object PasswordExpiryDate

2- Belirli bir kullanıcı için şifre bitiş tarihini öğrenme


Get-ADUser kullanıcıAdı -Properties msDS-UserPasswordExpiryTimeComputed, PasswordNeverExpires |
Select-Object Name, PasswordNeverExpires,
@{Name="PasswordExpiryDate"; Expression={
    if ($_.PasswordNeverExpires) { "Never" }
    elseif ($_. 'msDS-UserPasswordExpiryTimeComputed') {
        [datetime]::FromFileTime($_. 'msDS-UserPasswordExpiryTimeComputed')
    } else { $null }
}}

3- Şifresi 7 gün içinde bitecek kullanıcılar


$limit = (Get-Date).AddDays(7)

Get-ADUser -Filter * -Properties msDS-UserPasswordExpiryTimeComputed, PasswordNeverExpires |
Where-Object {
    -not $_.PasswordNeverExpires -and
    $_. 'msDS-UserPasswordExpiryTimeComputed' -ne $null -and
    [datetime]::FromFileTime($_. 'msDS-UserPasswordExpiryTimeComputed') -lt $limit
} |
Select-Object SamAccountName,
@{Name="PasswordExpiryDate"; Expression={[datetime]::FromFileTime($_. 'msDS-UserPasswordExpiryTimeComputed')}} |
Sort-Object PasswordExpiryDate
``

READ  Windows Server' da NTP Sunucusunu yapılandırma

Yorum yapın