PowerShell İle İşletim Sistemine Göre AD Bilgisayar Sayılarını Bulma

Merhaba arkadaşlar,

Sistem yöneticilerinin özellikle lisans denetimleri öncesinde ve anti virüs yazılımları gibi bütün makinelere kurulacak sistemler öncesi saha analizinde işletim sistemlerine göre bilgisayar sayıları ihtiyaç duydukları hayati bilgilerden biri olabiliyor. AD’ye ilişkin hemen hemen her soruya cevap veren PowerShell ile bunun cevabını vermek de son derece basittir. Aşağıdaki powershell scripti ile yukarıdaki ekran görüntüsünde göründüğü gibi bilgisayar sayıları kolaylıkla elde edilebilir.

# Import AD module
Import-Module ActiveDirectory


# Domain adını bulma
$DomainName = (Get-ADDomain).NetBIOSName 

# Kaç gün öncesine kadar oturum açmış makineleri sorgula
$days = 30
$lastLogonDate = (Get-Date).AddDays(-$days).ToFileTime()


# AD sorgulama
$Computers = @(Get-ADComputer -Properties Name,operatingSystem,lastLogontimeStamp -Filter {(OperatingSystem -like "*Windows*") -AND (lastLogontimeStamp -ge $lastLogonDate)})
foreach($Computer in $Computers)
{
    $Computer.OperatingSystem = $Computer.OperatingSystem -replace '®' -replace '™' -replace '专业版','Professional (Ch)' -replace 'Professionnel','Professional (Fr)'
}


$Computers | Group-Object operatingSystem | Select Count,Name | Sort Name | Out-GridView




Uzaktan DNS Adresi Değiştirme

Sistem yöneticileri için network yapısı ve içerisinde yer alan cihazların sürekliliği ön plandadır. Bazı durumlarda uzakta yer alan cihazların (Windows için) DNS ayarlarının değiştirilmesi gerekmektedir. Burada devreye Microsoft’un mükemmel denebilecek ürünlerinden biri olan Powershell devreye girmektedir.

Aşağıda yer alan powershell scriptini kullanarak uzak bilgisayarın dns ayarlarını değiştirebilirsiniz.

  • İlk satırda yer alan “C:\list\servers.txt” dosyası dns ayarları değiştirilecek makinelerin IP adresleri veya isimleri yer alıyor. Dosya yapısı her satıra bir makine bilgisi gelecek şekilde düzenlenmelidir.
  • $DNSServers = “10.1.0.254”,”10.1.0.253″ satırında da verilecek yeni DNS IP adresleri veriliyor. Bu örneğimizde 254 IP adresi birinci DNS, 253 IP adresi de ikinci DNS olarak ayarlanacak.

$computer = get-content C:\list\servers.txt 

$NICs = Get-WMIObject Win32_NetworkAdapterConfiguration -computername $computer |where{$_.IPEnabled -eq “TRUE”} 

  Foreach($NIC in $NICs) { 

$DNSServers = "10.1.0.254","10.1.0.253" 

 $NIC.SetDNSServerSearchOrder($DNSServers) 

 $NIC.SetDynamicDNSRegistration(“TRUE”) 

}




Sistemde Oturum Açan Hesabın Sorgulanması

Sistem yöneticilerinin, sistemi yönetirken bilmeleri gereken bilgilerden biri de hangi bilgisayarda hangi hesabın oturum açtığı bilgisidir. Bu bilgiye basit bir powershell komutu ile ulaşabiliriz.

 

Sorguyu yapmak için kullanabileceğimiz powershell sorgusu:




DHCP Sunucusundan IP Silme

IP bloklarının verebildiği IP adres sayılarının yetersiz olduğu durumda bazı IP adreslerinin DHCP’den silinmesi gerekmektedir. Adresleri tek tek silinebileceği gibi bir powershell scripti ile toplu da silinebilir. Aşağıda yer alan powershell scriprti kullanılarak belli şartları şağlayan IP adreslerini kolaylıkla silebiliriz. Script active directory kullanıcısnın yetkisye sahip olması durumunda kendi bilgisayarında da çalıştırabilir.

Aşağıdaki örnek scripte isminde android, galaxy veya phone geçen ve rezerve olmayan IP adresleri siliniyor.