Powershell ile last logon date çalışması
Powershell ile lastlogon date belirli bir tarihi geçen kullanıcıları bulma ve istersek onları disable etme şansına tek bir komut ile erişebiliyoruz.
Blogumu takip edenler bilir Powershell Windows için inanılmaz güçlü bir tool, Gui üzerinden yaptığımız bir çok işlemi powershell den yapabildiğimiz gibi Gui ile yapamadığımız işleri de sadece bir kaç komutla powershell ile halledebiliyoruz. Bunlardan bir tanesine de bugün değineceğim.
Makale İçeriği
Powershell ile lastlogon date çalışması
Bu çalışma ile şunu yapacağız. Active directory üzerinde logon olmayan kullanıcılarımız, şirketimizde aktif olarak çalışmıyor anlamına geliyor. Örneğin bir kullanıcı işten çıktı ve siz o kullanıcıyı disable etmeyi gözden kaçırdınız bu büyük bir risk oluşturur. Bunu da her gün gidip Active directory üzerinden hangi kullanıcılar disable diye manual taramanız hem çok büyük bir zaman israfı hem de oldukça zahmetli olacaktır. Powershell’in gücünü kullanarak bir komutla belirli bir tarihten önce logon olmayan kullanıcıları çekelim.
Öncelikle bu komutu Active directory yüklü olan sunucuda çalıştırmanız gerekecektir.
Aşağıdaki komut Active Directory üzerinde, -60 ile Adddays parametresi ile belirttiğimiz üzere 60 günden daha önce logon olmayan kullanıcıları getirir. İsterseniz -60 parametresini 30 yapabilirsiniz veya 10 gün yapabilirsiniz ve bu tarihten daha önceki bir zamanda logon olmayan tüm kullanıcıları dökebilirsiniz. Bu komut bir get komutu olduğu için search eder ve herhangi bir zararı bulunmamaktadır.
1 2 3 |
Get-Aduser -Filter * -Properties "LastLogonDate" |Where {$_.LastLogonDate -le (Get-Date).AddDays((-60)} |Sort-Object -Property LastLogonDate -Descending |Format-Table -Property name,lastlogondate -AutoSize |
Belirli bir tarihten daha önce logon olmayan kullanıcıları disable etme
Peki 60 günden daha önceki bir tarihte logon olmayan kullanıcıları süzdük peki bu kullanıcıları ne yapacağız. Tabiki disable edeceğiz. Veya ihtiyacınıza göre siledebilirsiniz kararı size kalmış.
Hatta Powershell komutunu çeşitlendirerek 60 günden daha önce logon olmayan kullanıcıları disable edebilir. 120 günden daha önce logon olmamış kullanıcıları silebilirsiniz v.b
Önemli Not : Aşağıdaki komut Active directory üzerinde kullanıcı disable edeceği için, komut çıktısına mutlaka dikkat edin, aktif olan userları bulk olarak disable etmek istemeyiz.
Bu yüzden kendimizi koruyalım ve -whatif parametresi ile aşağıdaki komutu çalıştırırsak ne olacakmış bir görelim.
1 2 3 |
Get-Aduser -Filter * -Properties "LastLogonDate" |Where {$_.LastLogonDate -le (Get-Date).AddDays((-60)} |Sort-Object -Property LastLogonDate -Descending | Disable-Adaccount -whatif |
Ekranda gördüğümüz üzere -whatif ile komutu çalıştırırsak aşağıdaki userların disable edileceğini görüyoruz. Eğer kontrol ettiğimizde bu bizim için ok ise -whatif parametresini kaldırarak komutumuzun çalışmasını ve 60 günden eski olan userların disable edilmesini sağlayalım.
1 2 3 |
Get-Aduser -Filter * -Properties "LastLogonDate" |Where {$_.LastLogonDate -le (Get-Date).AddDays((-60)} |Sort-Object -Property LastLogonDate -Descending | Disable-Adaccount |
Harika!. Powershell’in gücünü kullanarak bir riski mitigate ettik. Ve aktif olmayan userların disable edilmesini sağladık.