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 '*'").count

Bir 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 -A

Tü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 LastLogonDate

Kilitli 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,IPv4Address

Kullanıcı hesapları gibi, Active Directory'deki bilgisayar hesaplarını da sayabilirsiniz:

(Get-ADComputer -Filter "Name -like '*'").count

Etki 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 ile çok kolay bir şekilde yapılabilir.

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:

  1. "nslookup"ı başlatın.
  2. "Türünü ayarla=tümü" yazın.
  3. "_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, SchemaMaster

Get-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).OperationMasterRoles

Get-ADDomainController -Filter {OperationMasterRoles -like "PDC*"} | Select Name

Almak 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 ProtectedFromAccidentalDeletion

Silme koruması şu şekilde etkinleştirilebilir:

Set-ADObject ‹DN of object› -ProtectedFromAccidentalDeletion $true

Good2know

 

To go along with this topic, check out this ScriptRunner webinar:

Active Directory management - Easy as that with PowerShell

Managing 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

 

Query Screenshot ScriptRunner
ScriptRunner already comes with different, ready to use types of queries. Common use cases are AD queries, which can be executed directly within the Windows domain.

The appropriate queries are also available for Azure straight away. It is also possible to execute self-written scripts as queries by selecting the option "...with a script".

With "List of Entries", predefined lists can be stored as selection, the last option "File of Entries" can be used to retrieve options in a file e.g. *.CSV.

İlgili makaleler