Forum
Merhaba,
50 tane sunucu olduğunu düşünün bu sunuculara atanmış dns sunucuları sırası ile öğrenmek istiyorum. Nasıl ilerleyebilirim bir text dosyasından sunucu isimlerini alıp bana network kartında olan 1.DNS Sunucu ve 2.DNS Sunucu bilgisini öğrenip gerekiyorsa değiştirmem lazım. Konu hakkında bilgisi olan arkadaşların yardımlarını bekliyorum.
Teşekkürler.
powershellsart değil ise pxesec ile basitce yapılabilir bu
bir dosyaya bilgisayarların isim veya ip listesini yapın ve psexec ile ipconfig /all komutu gondererek tum ip bilgilerini alabilir
degistirmek istediklerinizi de yine psexec ve netsh komutu ile değiştirebilirsiniz
Sunucuların DNS yapılandırmalarını, aşağıdaki gibi çekebilirsiniz:
Get-WmiObject -Class Win32_NetworkAdapterConfiguration | ft Description, DNSServerSearchOrder
Eğer ki uzak sunucudan almak istiyorsanız, -ComputerName parametresi eklemek gerekecek:
Get-WmiObject -ComputerName 10.10.10.10 -Class Win32_NetworkAdapterConfiguration | ft Description, DNSServerSearchOrder
Bu komutun çalışabilmesi için aynı AD içinde bulunmanız ve PowerShell'i, diğer sunucularda da yetkili olan bir kullanıcı ile açmanız gerekmektedir.
Eğer ki uzak sunucular, aynı AD içerisinde ise fakat farklı bir kullanıcı ile bağlanılması gerekiyorsa, -Credential kullanmak gerekir:
Get-WmiObject -ComputerName 10.10.10.10 -Class Win32_NetworkAdapterConfiguration -Credential (Get-Credential) | ft Description, DNSServerSearchOrder
Eğer ki uzak sunucular, aynı AD içerisinde değilse, bu durumda session yaratıp girmek gerekecek:
$psSession = New-PSSession -ComputerName localhost -Credential (Get-Credential)
$dnsOutput = Invoke-Command -Session $psSession -ScriptBlock { Get-WmiObject -Class Win32_NetworkAdapterConfiguration | ft Description, DNSServerSearchOrder }
Tüm bu öğrendiklerimizi, bir sunucu listesindeki 50 sunucuya uygulamak için öncelikle tüm sunucular bir txt dosyasına alt alta satır satır yazılır. Sonrasında Get-Content ile bulunduğu lokasyona göre çekilir. Foreach uygulanarak, her bir sunucu için işlem yapılır. Yani:
$servers = Get-Content -Path C:\Sunucularim.txt
foreach ($server in $servers)
{
$output = Get-WmiObject -ComputerName $server -Class Win32_NetworkAdapterConfiguration | ft Description, DNSServerSearchOrder
Add-Content -Value $server -Path C:\listeciktisi.txt
Add-Content -Value $output -Path C:\listeciktisi.txt
Add-Content -Value "------------------" -Path C:\listeciktisi.txt
}
Script çalıştıktan sonra tüm çıktıyı C:\listeciktisi.txt içine atacaktır.
Kolay gelsin.
Yusuf
Bu cilgin cevap icin tesekkurler Yusuf 🙂
Sadece cilgin diyerek haksizlik etmemek lazim 🙂
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************