Get-ADComputer: PowerShell ile Active Directory'de Bilgisayar Özelliklerini Bulun
Bir Active Directory etki alanındaki bilgisayar hesap nesneleri (sunucular ve iş istasyonları) hakkında çeşitli bilgiler almak için Get-ADComputer PowerShell cmdlet'ini kullanabilirsiniz. Bu, AD bilgisayarlarını çeşitli kriterlere göre aramak için en kullanışlı cmdlet'lerden biridir.
Diyelim ki göreviniz, Active Directory'de 120 günden uzun süredir bir etki alanına kayıtlı olmayan tüm etkin olmayan bilgisayarları bulmak ve bu bilgisayar hesaplarını devre dışı bırakmak.
Get-ADComputer cmdlet'ini kullanabilmeniz için Windows PowerShell için Active Directory Modülünü yüklemeniz ve içe aktarmanız gerekir.
Import-Module activedirectoryİpucu. PowerShell 3.0 sürümünde (Windows Server 2012'de kullanıma sunulmuştur) veya daha yeni bir sürümde, aşağıdaki bileşen kuruluysa bu modül varsayılan olarak içe aktarılır: Uzak Sunucu Yönetim Araçları -> Rol Yönetim Araçları -> AD DS ve AD LDS Araçları -> için Active Directory modülü Windows PowerShell'i. Get-ADComputer cmdlet'ini masaüstü istemcilerde (Windows 11 veya 11) kullanmak için, RSAT'ı indirip yüklemeniz ve Denetim Masası'ndan veya şu komutu kullanarak AD-Powershell modülünü etkinleştirmeniz gerekir:
Enable-WindowsOptionalFeature -Online -FeatureName RSATClient-Roles-AD-PowershellGet-ADComputer ile Bilgisayar Nesnesi Özelliklerini Listeleme
Get-Help komutuyla Get-ADComputer cmdlet parametreleri hakkında her zamanki gibi yardım alabilirsiniz:
Get-Help Get-ADComputerAD for PowerShell modülündeki cmdlet'leri kullanarak AD'den bilgi almak için etki alanı yöneticisi ayrıcalıklarına sahip olmanız gerekmez. Domain Users veya Authenticated Users grubunun üyesi olan normal bir kullanıcı hesabı kullanmak yeterlidir.
Etki alanındaki belirli bir bilgisayar hesabı hakkında bilgi almak için, adını -Identity parametresinin argümanı olarak belirtin:
Get-ADComputer -Identity SRV-DB01DistinguishedName : CN=SRV-DB01,OU=Servers,OU=London,OU=UK,DC=a-d,DC=com
DNSHostName : SRV-DB01.a-d.site
Enabled : True
Name : SRV-DB01
ObjectClass : computer
ObjectGUID : 87654321-1234-5678-0000-123412341234
SamAccountName : SRV-DB01$
SID : S-1-5-21-123456780-1234567890-0987654321-1234
UserPrincipalName :
Get-ADComputer cmdlet'i, Bilgisayar nesnesinin yalnızca temel özelliklerini AD'den döndürdü. AD etki alanındaki son bilgisayar kaydının zamanı ile ilgileniyoruz, ancak bu bilgi yukarıdaki komutun çıktısında görüntülenmiyor. Bu bilgisayar nesnesinin tüm kullanılabilir özelliklerini Active Directory'den listeleyebilirsiniz:
Get-ADComputer -Identity SRV-DB01 -Properties *Bu bilgisayar nitelikleri listesi, Öznitelik Düzenleyici sekmesindeki Active Directory Kullanıcıları ve Bilgisayarları konsolunda (dsa.msc) da bulunur.
Get-Member kullanarak, AD'deki Bilgisayar sınıfının tüm özelliklerinin bir listesini alabilirsiniz.
Get-ADComputer -Filter * -Properties * | Get-MemberGördüğünüz gibi, bu bilgisayarın ağda son oturum açma zamanı, bilgisayarın LastLogonDate özniteliğinde belirtilmiştir - 02.06.2022 3:53:50 AM.
Get-ADComputer cmdlet'i, bilgisayarın herhangi bir özelliğini komut sonuçlarında görüntülemenizi sağlar. Çıktıda yalnızca Name ve LastLogonDate özniteliklerinin değerlerini bırakarak tüm gereksiz bilgileri kaldırın.
Get-ADComputer -identity SRV-DB01 -Properties * | FT Name, LastLogonDate -AutosizeBu nedenle, tek bir bilgisayar için etki alanındaki son kayıt zamanına ilişkin verileri aldık. Ardından, etki alanındaki tüm bilgisayarlar için son ağ kaydının zamanı hakkındaki bilgileri görüntülemesini sağlamak için komutu değiştirmeniz gerekir. Bunu yapmak için -Identity öğesini -Filter * olarak değiştirin:
Get-ADComputer -Filter * -Properties * | FT Name, LastLogonDate -AutosizeYalnızca 2 alan içeren basit bir tablomuz var: bilgisayar adı ve LastLogonData tarihi. Bilgisayar nesnesinin diğer alanlarını AD'den bu tabloya ekleyebilirsiniz.
Belirli bir OU'daki (Kuruluş Birimi) bilgisayar nesneleri hakkında bilgi görüntülemek için -SearchBase parametresini kullanın:
Get-ADComputer -SearchBase ‘OU=Paris,DC=a-d,DC=loc’ -Filter * -Properties * | FT Name, LastLogonDate -AutosizeSırala cmdlet'ini kullanarak sorgu sonuçlarını son oturum açma tarihine göre sıralayın:
Get-ADComputer -Filter * -Properties * | Sort LastLogonDate | FT Name, LastLogonDate -AutosizeBöylece, etki alanı bilgisayarlarının bir listesine ve Active Directory ağına en son giriş yaptıkları tarihe sahibiz. Şimdi 20 günden fazla kullanılmayan bilgisayar hesaplarını devre dışı bırakmak istiyoruz.
Get-Date'i kullanarak değişkendeki geçerli tarihin değerini alabilir ve bunu 120 güne indirebiliriz:
$date_with_offset= (Get-Date).AddDays(-120)Elde edilen tarih değişkeni, LastLogonDate alanında Get-ADComputer sorgusunun bir filtresi olarak kullanılabilir:
Get-ADComputer -Properties LastLogonDate -Filter {LastLogonDate -lt $date_with_offset } | Sort LastLogonDate | FT Name, LastLogonDate -AutosizeBu nedenle, etki alanı ağına 120 günden uzun süredir kayıtlı olmayan, etkin olmayan bilgisayar hesaplarının bir listesine sahibiz. Bu hesapları devre dışı bırakmak için Disable-ADAccount veya Set-ADComputer komutunu kullanın.
İpucu. İlk kez, komutun AD nesnelerinde herhangi bir değişiklik yapılmadan çalıştırılması durumunda ne olacağını görmeyi sağlayan -WhatIf anahtarıyla komutun sonuçlarını test etmek daha iyidir.
Get-ADComputer -Properties LastLogonDate -Filter {LastLogonData -lt $date_with_offset } | Set-ADComputer -Enabled $false -whatifArtık etkin olmayan tüm bilgisayar hesaplarını devre dışı bırakabilirsiniz:
Get-ADComputer -Properties LastLogonDate -Filter {LastLogonData -lt $datecutoff} | Set-ADComputer -Enabled $falseNot. Ayrıca, Search-ADAccount cmdlet'ini kullanarak engellenen, devre dışı bırakılan ve etkin olmayan bilgisayarların ve etki alanı kullanıcılarının bir listesini alabilirsiniz.
Get-ADComputer ile Arama Filtrelerini Kullanma
Get-ADComputer cmdlet'inin -Filter bağımsız değişkenini, belirli ölçütlere dayalı olarak birden çok Active Directory bilgisayarını aramak için kullanabilirsiniz. Burada joker karakterleri ve mantıksal karşılaştırma işleçlerini kullanabilirsiniz. Filtre olarak yalnızca temel bilgisayar nesnesi öznitelikleri kullanılabilir.
Genişletilmiş bilgisayar özniteliklerinde arama filtreleri kullanmanız gerekirse, bunlar Where-Object kanalı aracılığıyla belirtilebilir. Bu makalenin sonraki bölümünde birkaç örnek var.
Aşağıda, etki alanındaki bilgisayar nesnelerini belirli ölçütlere göre sorgulamak ve aramak için Get-ADComputer cmdlet'ini kullanmanın bazı yararlı örnekleri verilmiştir.
Active Directory'deki tüm etkin (engellenmemiş) bilgisayarların toplam sayısını alın:
(Get-ADComputer -Filter {enabled -eq "true"}).countBilgisayarları aynı anda birkaç parametreye göre aramak için birden çok filtre kullanabilirsiniz. Bunu yapmak için PowerShell mantıksal karşılaştırma işleçlerini kullanın (-and, -eq, -ne , -gt , -ge , -lt , -le , -like , -notlike , -and , -or , vb.).
AD etki alanındaki Windows Server ana bilgisayarlarının sayısını sayın:
(Get-ADComputer -Filter {enabled -eq "true" -and OperatingSystem -Like '*Windows Server*' }).countAdları LonPC ile başlayan belirli bir kuruluş birimindeki bilgisayarların listesini alın:
Get-ADComputer -Filter {Name -like "LonPC*"} -SearchBase ‘OU=London,DC=a-d,DC=com’ -Properties IPv4Address | Format-table Name,DNSHostName,IPv4Address | ft -Wrap -AutoKuruluş biriminde arama yaparken, -SearchScope 1 ek parametresini kullanabilirsiniz, bu da yalnızca kök kuruluş biriminde arama yapmanız gerektiği anlamına gelir. -SearchScope 2 seçeneği, iç içe geçmiş tüm OU'lardaki bilgisayarlar için yinelemeli arama anlamına gelir.
Windows 10 çalıştıran tüm iş istasyonu bilgisayarlarını bulmak için:
Get-ADComputer -Filter {OperatingSystem -like '*Windows 10*'}İşletim sistemi sürümü, Hizmet Paketi yüklü olan etki alanındaki sunucuların bir listesini alın. ve IP adresi:
Get-ADComputer -Filter 'operatingsystem -like "*Windows server*" -and enabled -eq "true"' -Properties Name,Operatingsystem, OperatingSystemVersion, OperatingSystemServicePack,IPv4Address | Sort-Object -Property Operatingsystem | Select-Object -Property Name,Operatingsystem, OperatingSystemVersion, OperatingSystemServicePack, IPv4Address| ft -Wrap -AutoÇıktı, AD'deki Windows Server listesini içeren temiz bir tabloydu:
Get-ADComputer ile Active Directory Taşıtlarını Sorgulayın: Örnekler
Aşağıda, belirli ölçütlere dayalı olarak bir etki alanındaki bilgisayarları seçmek için Get-ADComputer cmdlet'ini kullanmanın bazı yararlı örnekleri verilmiştir.
-LDAPFilter özniteliği, çeşitli LDAP sorgularını Get-ADComputer cmdlet'inin bir parametresi olarak kullanmanıza izin verir, örneğin:
Get-ADComputer -LDAPFilter "(name=*db*)"|ftBelirli bir Active Directory OU'sunda devre dışı bırakılan tüm bilgisayar nesnelerini bulun:
Get-ADComputer -filter * -SearchBase ‘OU=Computers,OU=London,DC=a-d,dc=com’ | Where-Object {$_.enabled -eq $False}Etki alanında 6 aydan uzun süredir oturum açmayan tüm bilgisayar hesaplarını silmek için şu komutu kullanabilirsiniz:
Get-ADComputer -properties lastLogonDate -filter * | where { $_.lastLogonDate -lt (get-date).addmonths(-6) } | Remove-ADComputerActive Directory'de bilgisayarın parolasının en son değiştirildiği zamanı görüntüleyin. Varsayılan olarak, parola her 30 günde bir bilgisayar tarafından otomatik olarak değiştirilmelidir. Bilgisayar parolası AD'deki parolayla eşleşmezse, bilgisayarın etki alanıyla olan güven ilişkisi bozulur:
Get-ADComputer -Identity MUNPC321 -Properties PasswordLastSetGet-ADComputer komutunun sonucu bir düz metin dosyasına aktarılabilir:
Get-ADComputer -Filter { OperatingSystem -Like '*Windows Server 2016*' } -Properties OperatingSystem | Select DNSHostName, OperatingSystem | Format-Table -AutoSize C:\Script\server_system.txtAyrıca bilgisayarların bir listesini alabilir ve bunu bir CSV dosyasına aktarabilirsiniz:
Get-ADComputer -Filter * -Property * | Select-Object Name,OperatingSystem,OperatingSystemServicePack | Export-CSV All-Windows.csv -NoTypeInformation -Encoding UTF8Veya bilgisayarların listesini ve gerekli özellikleri içeren bir HTML raporu alın:
Get-ADComputer -Filter {OperatingSystem -Like '*Windows Server 2012*' } -Properties * | Select-Object Name,OperatingSystem | ConvertTo-Html | Out-File C:\ps\ad_computers_list.htmlAD bilgisayarlarını WMI veya CIM aracılığıyla uzaktan sorgulayabilirsiniz. Örneğin, etki alanındaki tüm sunucuların seri numaralarını görüntülemek için:
Get-ADComputer -Filter 'operatingsystem -like "*Windows server*" -and enabled -eq "true"' | Select-Object Name | Foreach-Object {Get-CimInstance Win32_Bios -ComputerName $_.Name -ErrorAction SilentlyContinue | Select-Object PSComputerName,SerialNumber}Sonuç listesindeki tüm bilgisayarlarla belirli bir eylemi gerçekleştirmek için Foreach döngüsünü kullanmanız gerekir. Bu örnekte, model ve üretici ile etki alanındaki Windows Server ana bilgisayarlarının bir listesini almak istiyoruz.
$Computers = Get-ADComputer -Filter {OperatingSystem -Like '*Windows Server*'}
Foreach ($Computer in $Computers)
{
$Hostname = $Computer.Name
$ComputerInfo = (Get-WmiObject -Computername $Hostname Win32_ComputerSystem)
$Manufacturer = $Computer.Manufacturer
$Model = $Computer.Model
Write-Host "Name: $Hostname"
Write-Host "Manufacturer: $Manufacturer"
Write-Host "Model: $Model"
Write-Host " "
$Content = "$Hostname;$Manufacturer;$Model"
Add-Content -Value $Content -Path "C:\PS\ServersInfo.txt"
}Daha kısa bir döngü sözdizimi kullanabilirsiniz. Belirli bir OU'daki tüm bilgisayarlarda belirli bir komutu çalıştırmanız gerektiğini varsayalım. Bu örnekte, tüm sunucularda bir grup ilkesi güncelleme komutu çalıştırmak için Komutu Çağır'ı kullanacağım:
get-adcomputer -SearchBase "OU=Servers,DC=a-d,DC=com" -Filter * | %{ Invoke-Command -Computer $_.Name -ScriptBlock {gpupdate /force} }Aynı şekilde, etki alanındaki tüm bilgisayarlardan çeşitli yararlı bilgiler alabilirsiniz:
Etki alanı bilgisayarlarında Windows etkinleştirme durumunu kontrol edin
Boş disk alanını kontrol edin
PowerShell sürümünü kontrol edin ve güncelleyin
Tüm bilgisayarlardan ağ yapılandırmalarını toplayın
Mevcut kayıtlı kullanıcı adlarını al
Get-ADComputer ve PowerShell başlangıç komut dosyalarını kullanarak, çeşitli bilgisayar ayarlarını kontrol edebilir veya AD'deki bilgisayar özniteliklerinde çeşitli yararlı bilgiler depolayabilirsiniz (örneğin, bilgisayar açıklamasına bir kullanıcı adı ekleyebilirsiniz).
Örneğin, kullanıcıların bilgisayarlarındaki SCCM aracısının durumunu izliyorum. Her bilgisayar önyükleme yaptığında, ccmexec hizmet durumunu kullanılmayan bir bilgisayar özniteliğine - extensionAttribute10 kaydeden küçük bir oturum açma komut dosyası çalıştırır. Ardından aşağıdaki komutu kullanarak CCMExec hizmetinin eksik olduğu veya çalışmadığı bilgisayarları bulabilirim.
get-adcomputer -filter {extensionAttribute10 -ne "SCCM Agent:Running"} -SearchBase “OU=Compters,OU=London,DC=a-d,DC=com” -properties dNSHostName,extensionAttribute10,LastLogonDate |select-object dNSHostName,extensionAttribute10,LastLogonDateGet-ADUser cmdlet'ini kullanarak Active Directory kullanıcı hesapları bilgilerini alabilirsiniz.











