PowerShell ile Active Directory sorguları
style="letter-spacing: 0px; text-transform: unset; arka plan rengi: şeffaf;">PowerShell, Windows'ta bilgi sorgulama söz konusu olduğunda güçlü bir ortamdır. PowerShell önemli bir yardım olabilir, style="letter-spacing: 0px; text-transform: unset; arka plan rengi: şeffaf;">yalnızca sunucu ayarlarını veya iş yüklerini düzenlemek için kullanılan komut dosyaları için değil, aynı zamanda Kapsamlı bilgi erişimi ve rapor oluşturma için. Bu yazımızda Active Directory'den (AD) kapsamlı bilgi toplayabilen bazı PowerShell cmdlet'lerini göstereceğiz. Bu tür sorgu sonuçları sorun giderme açısından da ilgi çekicidir. Bu arada, ScriptRunner'ın yerleşik sorguları vardır; bu sorgular, kendi komut dosyasıyla yazılmış sorgularınızla ("komut dosyasıyla" işlevini kullanarak) desteklenen, aynı ancak komut dosyasıyla yazılmış PowerShell sorgularından daha hızlıdır.
Active Directory Yönetimi modülü Windows 10/11 veya Windows Server 2019/2022'de yüklüyse PowerShell'de belirli Active Directory (AD) bilgilerine de erişebilirsiniz. Get-Command Get-Ad* komutu zaten Active Directory'den bilgi görüntüleyebilen çok sayıda cmdlet'i göstermektedir.
Bu aynı zamanda ağ üzerinden de sorunsuz çalışır. Get-Command -Module ActiveDirectory cmdlet'i, Active Directory'yi yönetebilen tüm cmdlet'leri görüntüler. Get-Module -ListAvailable komutu yine tüm modülleri gösterir. Bu şekilde diğer modüllerin adları da görüntülenebilir ve Get-Command ile cmdlet'leri okunabilir.
Kullanıcı hesaplarındaki verileri görüntüle
Bireysel Get cmdlet'leri filtrelerle genişletilebilir. Örneğin, şu anda devre dışı bırakılmamış tüm kullanıcıları görüntülemek istiyorsanız şunu kullanabilirsiniz:
get-aduser -ldapfilter "(&(&(objectCategory=user)(userAccountControl=512)))" | where-object -property enabled -eq truepowershell-ad-infos-01
AD'den kullanıcı bilgilerini alın
Active Directory kullanıcılarının (AD) sayısını görüntülemek için kullanıcılar), şunları kullanabilirsiniz:
(Get-ADUser -Filter "Name -like '*'").countBir kullanıcı hesabının son oturum açma işlemini görüntülemek istiyorsanız PowerShell farklı parametrelerle de mevcuttur:
Get-ADUser "<Name>" -Properties LastLogonDate | FT -Property Name, LastLogonDate -ATüm kullanıcı hesaplarının oturum açma tarihi PowerShell'de bir liste olarak da görüntülenebilir:
Get-ADUser -Filter {(Enabled -eq $true)} -Properties LastLogonDate | select samaccountname, Name, LastLogonDate | Sort-Object LastLogonDateKilitli kullanıcı hesapları Search-ADAccount -lockedout ile görüntülenebilir. PowerShell aracılığıyla hesapların kilidi, örneğin Get-ADUser -Identity joost | ADhesabının kilidini açma
Active Directory'deki bilgisayar hesaplarını görüntüleme
AD'deki bilgisayar hesaplarını da görüntülemek için ek cmdlet'ler mevcuttur. İşlem hattıyla sonuç "Seç" öğesine iletilebilir ve veriler istenen bilgi için filtrelenebilir:
Get-ADComputer -filter 'name -like "*"' -Properties * | select name,OperatingSystem,IPv4AddressKullanıcı hesapları gibi, Active Directory'deki bilgisayar hesaplarını da sayabilirsiniz:
(Get-ADComputer -Filter "Name -like '*'").countEtki alanı denetleyicilerini sorgulama
Active Directory'den bilgi okurken ortamdaki etki alanı denetleyicileri önemli bir rol oynar. Etki alanı denetleyicileriyle ilgili verileri görüntülemek için Get-ADDomaincontroller cmdlet'ini kullanın. Ortamdaki tüm etki alanı denetleyicileriyle ilgili bilgileri görüntülemek istiyorsanız verileri örneğin aşağıdakilerle de filtreleyebilirsiniz:
(Get-ADForest).Domains | %{ Get-ADDomainController -Filter * -Server $_ }PowerShell'de etki alanı denetleyicisi bilgilerini görüntüleme
Bu cmdlet için daha fazla olasılığa daha sonra değineceğiz.
PowerShell komut dosyalarının bilgi ayıklamak için neler yapabileceğine dair genel bir bakış edinmek için ücretsiz Microsoft Active Directory Dokümantasyon Komut Dosyasını kullanabilirsiniz. Komut dosyasını çıkardıktan sonra çalıştırmanız yeterlidir. Komut dosyası ayrıca raporlar da oluşturabilir.
PowerShell betiğiyle AD'den kapsamlı bilgiler de okuyabilirsiniz
Bu bölümdeki başka bir komut dosyası da "ADinfo.ps1"'dir.
Komut dosyası, başlatıldıktan sonra Active Directory'den gelen bilgileri de görüntüler.
PowerShell'den HTML dosyalarına bilgi çıkışı da PowerShell için sorun değildir
Ancak PowerShell daha da fazla seçenek sunuyor. Raporların oluşturulması da dahil olmak üzere grup politikalarını sesli olarak okumak da mümkündür. Bunun için komut şuna benzer:
Get-GPOReport -All -Domain "joos.int" -ReportType HTML -Path "C:\temp\report.html"PowerShell'de, alan adındaki şifre politikası ayarlarını görüntülemek için Get-ADDefaultDomainPasswordPolicy'i de kullanabilirsiniz. Ayarlar, ilgili politika için Grup İlkesi Yönetim Konsolu'nda (gpmc.msc) kontrol edilir. Parola ilkesi yapılandırmasının yolu şu şekildedir: "Bilgisayar Yapılandırması/İlkeler/Windows Ayarları/Güvenlik Ayarları/Hesap İlkeleri/Parola İlkeleri".
Etki alanları ve genel yapılara ilişkin DNS verilerini ve bilgilerini sorgulayın
Active Directory ve DNS birlikte yakın çalışır. Active Directory'de sorunlar varsa veya DNS bölgelerinin belgelenmesi gerekiyorsa, bu Get-DnsServerZone -ComputerName
Active Directory'deki DNS kayıtları, etki alanı denetleyicilerinin birbirine bağlanmasında önemli bir rol oynar. Kontrol aynı zamanda "nslookup" ile komut satırında da yapılabilir:
- "nslookup"ı başlatın.
- "Türünü ayarla=tümü" yazın.
- "_ldap._tcp.dc._msdcs.
" yazın, örneğin "_ldap._tcp.dc._msdcs.joos.int".
PowerShell'de, tek tek etki alanlarından veri almak için çeşitli cmdlet'leri de kullanabilirsiniz. Get-ADDomain ve Get-ADForest cmdlet'leri orman ve etki alanları hakkında bilgileri görüntüler. Borular, sonuçları cmdlet'lerden diğer cmdlet'lere (örneğin, Get-ADDomainController) aktarmak için kullanılabilir. Bu, örneğin etki alanı başına FSMO rollerini görüntülemek istiyorsanız kullanışlıdır. Her etki alanında aşağıdaki komutla görüntülediğiniz üç FSMO rolü vardır:
Get-ADDomain | Select InfrastructureMaster, RID-Master, PDCEmulatorŞema yöneticisi ve etki alanı adı yöneticisi orman başına yalnızca bir kez bulunur. Bu bilgiler daha sonra Get-ADForest CMDlet'iyle görüntülenebilir:
Get-ADForest | Select-Object DomainNamingMaster, SchemaMasterGet-ADDomain başlangıçta alanın işlem yöneticilerini (altyapı, RID ve PDC), DNS adını, etki alanı denetleyicilerini, işlem modunu, ana kuruluş birimlerini ve diğer bilgileri görüntüler.
<Get-ADForest cmdlet'i ayrıca alan adı yöneticisini, şema yöneticisini, konumları, UPN son eklerini ve alan adlarını gösterir. İki cmdlet, etki alanları, yapılar ve orman hakkındaki tüm ilgili bilgileri birkaç saniye içinde sağlar. Tek bir etki alanı denetleyicisinin FSMO rollerini görüntülemek istiyorsanız şunları kullanabilirsiniz:
(Get-ADDomainController).OperationMasterRolesGet-ADDomainController -Filter {OperationMasterRoles -like "PDC*"} | Select NameAlmak istiyorsanız Alan denetleyicilerine daha derinlemesine bakmak için alan denetleyicileri için Get-ADDomaincontroller cmdlet'ini kullanın. Burada ayrıca etki alanı denetleyicisinde etkin olan IP adresini ve FSMO rollerini de görebilirsiniz. Ayrıca hangi domain denetleyicilerinin global katalog olarak yapılandırıldığını ve sunucuda hangi işletim sisteminin hangi sürümde yüklü olduğunu da görebilirsiniz. Etki alanı denetleyicisinin atandığı konum ve sunucunun ağda hangi bağlantı noktalarını dinlediği de burada bulunabilir.
Active Directory'deki etki alanı denetleyicilerine ilişkin bilgileri sorgulama
PowerShell'de silme korumasını sorgulama ve ayarlama< /açıklık>
Active Directory'deki silme koruması nesnelerin yanlışlıkla silinmesini önler. Korumanın etkin olup olmadığı PowerShell'de kontrol edilebilir. Bir nesnenin korumasını şu şekilde etkinleştirmek de mümkündür:
Get-ADObject ‹DN of object› -Properties ProtectedFromAccidentalDeletionSilme koruması şu şekilde etkinleştirilebilir:
Set-ADObject ‹DN of object› -ProtectedFromAccidentalDeletion $true
To go along with this topic, check out this ScriptRunner webinar:Active Directory management - Easy as that with PowerShellManaging Active Directory users and groups is one of the central, recurring tasks of IT administration. In this webinar, we will show you how to standardize, automate and delegate these tasks in a time-saving way using PowerShell. How to query Active Directory with ScriptRunner
|







