PowerShell ile Aktif Dizindeki Aktif Olmayan Bilgisayarları ve Kullanıcıları Nasıl Bulursunuz?
Oldukça sık bir Active Directory yöneticisinin görevi, devre dışı bırakılmış veya etkin olmayan kullanıcı ve/veya bilgisayar hesaplarının bir listesini yapmaktır. Bir Active Directory etki alanındaki etkin olmayan nesnelerin bir listesini almak için hem ADUC konsolunda kayıtlı LDAP sorgularını hem de PowerShell cmdlet'lerini kullanabilirsiniz. Bu makalede, etkin olmayan kullanıcı ve bilgisayar hesaplarını bulmak için PowerShell'i nasıl kullanacağınızı göstereceğiz.
Active Directory yöneticisinin kullanılmayan bilgisayarları ve kullanıcı hesaplarını periyodik olarak devre dışı bırakması ve kaldırması gerekir. Bu, AD veritabanının (ntds.dit dosyası) boyutunu küçültür ve ayrıca bir saldırganın veya eski çalışanların etki alanına erişmek için eski hesapları kullanma riskini azaltır.
Aşağıda açıklanan tüm PowerShell cmdlet'lerini kullanmak için, bilgisayarda en az PowerShell sürüm 3.0 ve Uzak Sunucu Yönetim Araç Seti (RSAT) kurulu olmalıdır. RSAT'tan Windows PowerShell için Active Directory Modülünü etkinleştirin (Denetim Masası -> Programlar-> Windows Özelliklerini Açın ve Kapatın-> Uzak Sunucu Yönetim Araçları -> Rol Yönetim Araçları -> AD DS ve AD LDS Araçları).
RSAT özelliğinin en son Windows 10 yapılarına yüklenmesiyle ilgili ayrıntılar.
Bu PowerShell modülü, şu komut kullanılarak da etkinleştirilebilir:
Add-WindowsFeature RSAT-AD-PowerShellPowerShell konsolunu başlatın ve PowerShell modülü için Active Directory'yi içe aktarın:
Import-Module ActiveDirectoryAktif Dizin Alanında Aktif Olmayan (Eski) Bilgisayarlar Nasıl Bulunur?
Bir etki alanındaki etkin olmayan bilgisayar nesnelerini bulmak için Get-ADComputer cmdlet'ini kullanabilirsiniz. LastLogonTimeStamp özelliği, arama kriteri olarak kullanılabilir. Bu özniteliğin, bir bilgisayarın etki alanında en son ne zaman oturum açtığı hakkında gerçek zamanlı bilgileri almak için kullanılamayacağını unutmayın. Ancak, bu özniteliğin DC'ler arasında 9-14 günde bir çoğaltılması nedeniyle, herhangi bir etki alanı denetleyicisinden (yalnızca güncellenen LastLogonDate özniteliğinin aksine) son bilgisayar oturum açma zamanı hakkında bilgi alabilirsiniz. bilgisayarın oturum açtığı DC'de).
LastLogonTimeStamp özniteliğinin geçerli değerini, ADUC konsolundaki Nitelikler Düzenleyici sekmesindeki bilgisayar özelliklerinde kontrol edebilirsiniz.
Belirli bir kuruluş biriminde 180 günden uzun süredir oturum açmayan tüm bilgisayarları bulmak için aşağıdaki komutları kullanın:
$LastLogonDate= (Get-Date).AddDays(-180)
Get-ADComputer -Properties LastLogonTimeStamp -Filter {LastLogonTimeStamp -lt $LastLogonDate } -SearchBase ‘OU=Computers,OU=Mun,DC=a-d,dc=com’| Sort LastLogonTimeStamp| FT Name, @{N='lastlogontimestamp'; E={[DateTime]::FromFileTime($_.lastlogontimestamp)}} -AutoSize | Export-CSV c:\ps\inactive_computers.csvBu komut, etki alanında altı aydan uzun süredir kayıtlı olmayan etkin olmayan bilgisayarların listesini içeren bir CSV dosyası oluşturur.
Bulunan bilgisayar hesaplarını devre dışı bırakabilirsiniz:
Get-ADComputer -Properties LastLogonTimeStamp -Filter {LastLogonTimeStamp -lt $LastLogonDate } -SearchBase ‘OU=Computers,OU=Mun,dc=a-d,dc=com’| Disable-ADAccountBu bilgisayar nesnelerini ayrı bir kuruluş birimine taşıyın:
Get-ADComputer ... | Move-ADObject -TargetPath “OU=Disabled Computers,DC=a-d,DC=com”
Veya etkin olmayan bilgisayarları silin:
Get-ADComputer ... | Remove-ADComputerActive Directory'de Etkin Olmayan Kullanıcı Hesaplarını Bulun
Etkin olmayan kullanıcı hesaplarını bulmak için lastLogonTimeStamp özniteliğini de kullanabilirsiniz. Etkin olmayan kullanıcıların bir listesini oluşturmak için, lastLogon'u değil, bu özniteliği kullanmanız gerekir (lastLogon özniteliği, etki alanı denetleyicileri arasında çoğaltılmaz).
Aşağıdaki komut dosyası, Get-ADUser cmdlet'ini kullanarak etki alanında altı aydan (180 gün) uzun süredir oturum açmamış etkin kullanıcı hesaplarının seçilmesine izin verir:
$LastLogonDate= (Get-Date).AddDays(-180)
Get-ADUser -Properties LastLogonTimeStamp -Filter {LastLogonTimeStamp -lt $LastLogonDate } -SearchBase ‘OU=Users,OU=Mun,dc=a-d,dc=com’| ?{$_.Enabled -eq $True} | Sort LastLogonTimeStamp| FT Name, @{N='lastlogontimestamp'; E={[DateTime]::FromFileTime($_.lastlogontimestamp)}} -AutoSize | Export-CSV c:\ps\inactive_users.csvEtkin olmayan kullanıcıları devre dışı bırakabilirsiniz:
Get-ADUser -Properties LastLogonTimeStamp -Filter {LastLogonTimeStamp -lt $LastLogonDate } -SearchBase ‘OU=Users,OU=Mun,dc=a-d,dc=com’| Disable-ADAccountEtkin olmayan kullanıcı hesaplarını AD'den kaldırmanız gerekirse, işlem hattını kullanın.
Remove-ADUserEtkin Olmayan AD Nesnelerini Bulmak için Search-ADAccount'u Kullanma
AD'de etkin olmayan nesneleri bulmak için Get-ADUser, Get-ADComputer veya Get-ADObject cmdlet'lerini kullanabilirsiniz. Ancak, bu komutlar için doğru filtreyi oluşturmak zor olabilir. ActiveDirectory PowerShell modülü, bu görevleri gerçekleştirmek için daha kullanışlı bir cmdlet'e sahiptir - Search-ADAccount. Bu cmdlet, herhangi bir türdeki nesneleri (hem kullanıcılar hem de bilgisayarlar) bulmak için kullanılır. AD'de devre dışı bırakılmış, etkin olmayan ve kilitli nesneleri aramak gibi tipik görevler için Search-ADAccount cmdlet'ini kullanma örneklerine bakalım.
Search-ADAccount cmdlet'inin en önemli anahtarlarının listesi aşağıdadır:
- -AccountDisabled
Devre dışı bırakılan hesapları arayın
- -AccountExpired
Süresi dolmuş hesapların aranması
- -AccountExpiring [-DateTime DateTime] [-TimeSpan TimeSpan]
-
Belirli bir süre (-TimeSpan) veya belirli bir tarihte (-DateTime) sona erecek hesapların aranması
- -AccountInactive [-DateTime DateTime] [-TimeSpan TimeSpan]
Belirli bir tarihten (-DateTime) beri veya belirli bir süre boyunca (-TimeSpan) giriş yapılmamış hesapların aranması
- -LockedOut
Etki alanı parola politikası tarafından kilitlenen hesapların aranması
- -PasswordExpired
Süresi dolmuş şifrelere sahip hesapları arayın
- -PasswordNeverExpires
PasswordNeverExpires özniteliği ayarlanmış hesaplar (UserAccountControl özniteliği)
Not. Varsayılan olarak, Search-ADAccount cmdlet'i hem kullanıcı hem de bilgisayar hesaplarını aynı anda arar. Yalnızca kullanıcıları veya bilgisayarları aramak için şu anahtarlardan birini kullanmanız gerekir: ComputersOnly veya UsersOnly.
Örneğin, etki alanındaki devre dışı bırakılmış kullanıcı hesaplarının listesini görüntüleyelim:
Search-ADAccount -UsersOnly -AccountDisabledArama kapsamını belirli bir Active Directory kapsayıcısı (OU) ile sınırlayabilirsiniz:
Search-ADAccount -UsersOnly -AccountDisabled -searchbase "OU=Admins,OU=Accounts,DC=a-d,DC=com"Aynı veriler, bu komut kullanılarak daha uygun bir tablo biçiminde sunulabilir:
Search-ADAccount -UsersOnly -AccountDisabled -searchbase "OU=Admins,OU=Accounts,DC=a-d,DC=com"|ft -AutoSizeBelirli kullanıcı özniteliklerini içeren devre dışı bırakılmış kullanıcıların listesini almanız ve sıralanacak bir grafik tablo olarak sunmanız gerekiyorsa, aşağıdakileri çalıştırın:
Search-ADAccount -UsersOnly AccountDisabled |sort LastLogonDate | Select Name,LastLogonDate,DistinguishedName |out-gridview -title "Disabled Users"Kilitli kullanıcı hesaplarının listesi:
Search-ADAccount -UsersOnly -LockedOutSon 60 gün içinde etkin olmayan kullanıcı hesaplarının listesi:
$timespan = New-Timespan -Days 60
Search-ADAccount -UsersOnly -AccountInactive -TimeSpan $timespan | ?{$_.Enabled -eq $True}Bu kullanıcı hesaplarını saymak için:
Search-ADAccount -UsersOnly -AccountInactive -TimeSpan $timespan | ?{$_.Enabled -eq $True} | MeasureEtki alanı ağına son 90 gün içinde kayıtlı olmayan bilgisayarların listesi:
Search-ADAccount -AccountInactive -ComputersOnly -TimeSpan 90Veya belirli bir tarihten itibaren:
Search-ADAccount -AccountInactive -ComputersOnly -DateTime ‘1/1/2021’|Select Name,LastLogonDate| ftNesne listesini bir CSV'ye dışa aktarmak için şu komutu kullanın:
Search-ADAccount -AccountDisabled -UsersOnly| Export-Csv "c:\ps\disabled_users.csv"





