├── DNS-Resolver.ps1 ├── IP-to-Hostname-Resolver.ps1 └── README.md /DNS-Resolver.ps1: -------------------------------------------------------------------------------- 1 | Resolve-DnsName -Name [-Type ] [-Server ] [Diğer Parametreler] 2 | -------------------------------------------------------------------------------- /IP-to-Hostname-Resolver.ps1: -------------------------------------------------------------------------------- 1 | function ResolveIPtoName($IP) { 2 | $ResolvingResults = "" 3 | $ResolvingResults = @() 4 | $IPList += @($IP) 5 | foreach ($IP in $IPList) { 6 | try { 7 | $ResolvingResults += [System.Net.Dns]::GetHostEntry($IP) 8 | } 9 | catch { 10 | Write-Host "$IP could not be Resolved" -BackgroundColor Black -ForegroundColor Red 11 | } 12 | } 13 | $ResolvingResults | Select AddressList, HostName 14 | } 15 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Powershell-IP-to-Hostname-Resolver 2 | `Resolve-DnsName` komutu, PowerShell'de bir etki alanı adını (domain name) çözmek için kullanılır ve Windows Server 2012'den itibaren mevcuttur. Bu komut, eski `nslookup` aracının işlevselliğini modern bir PowerShell ortamına taşır. 3 | # Resolve-DnsName Komutu 4 | ``` 5 | Resolve-DnsName -Name [-Type ] [-Server ] [Diğer Parametreler] 6 | ``` 7 | Önemli Parametreler 8 | 9 | -Name: Zorunlu. Sorgulamak istediğiniz alan adını belirtir. Örneğin, -Name "google.com". 10 | 11 | -Type: İsteğe bağlı. Sorgu türünü belirtir. Varsayılan olarak A (IPv4) kayıtları döndürülür. Diğer türler: 12 | AAAA: IPv6 adresi 13 | CNAME: Canonical Name kaydı 14 | MX: Mail Exchange kaydı 15 | NS: Name Server kaydı 16 | SOA: Start of Authority kaydı 17 | TXT: Metin kaydı 18 | 19 | -Server: İsteğe bağlı. Sorguyu yapmak için kullanılacak DNS sunucusunu belirtir. Örneğin, -Server "8.8.8.8". 20 | 21 | -NoHostsFile: İsteğe bağlı. Ana bilgisayar dosyasını (hosts file) atlar ve doğrudan DNS sunucusuna sorgu gönderir. 22 | 23 | -CacheOnly: İsteğe bağlı. Yalnızca yerel DNS önbelleğindeki (cache) sonuçları döndürür. 24 | 25 | -DnsOnly: İsteğe bağlı. Sorguyu yalnızca DNS sunucusuna gönderir. 26 | Örnek Kullanımlar 27 | Temel A kaydı sorgusu: 28 | `Resolve-DnsName -Name "emreozanmemis.com"` 29 | Bu komut, emerozanmemis.com için varsayılan DNS A kayıtlarını döndürür. 30 | 31 | Farklı türde bir sorgu: 32 | `Resolve-DnsName -Name "emreozanmemis.com" -Type MX` 33 | Bu komut, emreozanmemis.com için MX (Mail Exchange) kayıtlarını döndürür. 34 | 35 | Özel bir DNS sunucusu kullanarak sorgulama: 36 | `Resolve-DnsName -Name "emreozanmemis.com" -Server "8.8.8.8"` 37 | Burada sorgu, Google’ın DNS sunucusu (8.8.8.8) üzerinden gerçekleştirilir. 38 | 39 | Ek İpuçları 40 | 41 | Resolve-DnsName komutu, detaylı DNS bilgilerini almak için -Verbose anahtarını destekler. 42 | Bu komut, sadece DNS sunucusuna yapılan istekler ve yanıtlar hakkında değil, aynı zamanda hata ayıklama için de değerli bilgiler sağlar. 43 | 44 | Asıl merak edilen ve yapmak istediğiniz daha karmaşık bir iş süreci olan IP adresinin hangi DNS adına sahip olduğu olabilir. 45 | 46 | ``` 47 | ###Resolve IP to HostName### 48 | function ResolveIPtoName($IP) { 49 | $ResolvingResults = "" 50 | $ResolvingResults = @() 51 | $IPList += @($IP) 52 | foreach ($IP in $IPList) { 53 | try {$ResolvingResults += [System.Net.Dns]::GetHostEntry($IP)} 54 | catch{Write-Host $IP could not be Resolved -BackgroundColor Black -ForegroundColor Red} 55 | } 56 | 57 | $ResolvingResults | Select AddressList, HostName 58 | } 59 | 60 | 61 | 62 | ###PowerShell üzerinde#### 63 | ResolveIPtoName IPadresigiriniz 64 | ``` 65 | 66 | Bu PowerShell script'i, verilen IP adresinin DNS adını (hostname) çözmek için yazılmıştır. Fonksiyon, bir dizi adımla çalışır ve elde ettiği sonuçları kullanıcıya gösterir. Script'i adım adım inceleyelim 67 | 68 | # ResolveIPtoName Fonksiyonu 69 | Fonksiyonun Söz Dizimi 70 | ``` 71 | function ResolveIPtoName($IP) { 72 | $ResolvingResults = "" 73 | $ResolvingResults = @() 74 | $IPList += @($IP) 75 | foreach ($IP in $IPList) { 76 | try { 77 | $ResolvingResults += [System.Net.Dns]::GetHostEntry($IP) 78 | } 79 | catch { 80 | Write-Host "$IP could not be Resolved" -BackgroundColor Black -ForegroundColor Red 81 | } 82 | } 83 | $ResolvingResults | Select AddressList, HostName 84 | } 85 | ``` 86 | Script Açıklaması 87 | 88 | Fonksiyon Tanımlama: 89 | function ResolveIPtoName($IP) ifadesi ile fonksiyon tanımlanır. 90 | $IP parametresi, fonksiyona dışarıdan girdi olarak verilen IP adresini temsil eder. 91 | 92 | Başlangıç Değerlerini Tanımlama: 93 | $ResolvingResults = "": Başlangıçta boş bir string değeri atanır. 94 | $ResolvingResults = @(): Boş bir dizi oluşturulur, çünkü fonksiyon birden çok sonucu döndürebilir. 95 | 96 | IP Listesini Oluşturma: 97 | $IPList += @($IP): Tek bir IP adresini, bir dizi formatında saklamak için listeye ekler. 98 | 99 | IP Adreslerini Çözümleme: 100 | foreach ($IP in $IPList): IP listesi içerisindeki her IP için çözümleme yapılır. 101 | try-catch bloğu ile hata yönetimi sağlanır: 102 | try kısmında, [System.Net.Dns]::GetHostEntry($IP) yöntemi ile IP adresinin DNS adı çözülür. 103 | Bu yöntem, .NET Framework'teki System.Net.Dns sınıfına başvurarak çalışır. 104 | Eğer başarılı olursa, sonuç $ResolvingResults dizisine eklenir. 105 | catch kısmında, eğer çözümleme başarısız olursa, ekrana hata mesajı renkli bir şekilde yazdırılır. 106 | 107 | Sonuçları Gösterme: 108 | Sonuçlar $ResolvingResults dizisinde saklanır. 109 | Select AddressList, HostName ifadesiyle sadece AddressList (IP adresleri listesi) ve HostName (Çözülen DNS adı) alanları gösterilir. 110 | 111 | Kullanım Örneği 112 | 113 | Fonksiyonu kullanmak için, IP adresini fonksiyona argüman olarak geçmeniz yeterlidir: 114 | `ResolveIPtoName "8.8.8.8"` 115 | Bu komut, fonksiyonun 8.8.8.8 IP adresini DNS adıyla çözmesini sağlayacak ve ekrana adres listesi ile hostname bilgilerini döndürecektir. 116 | 117 | Ek İpuçları 118 | 119 | Script'i daha esnek hale getirmek için, birden çok IP adresini aynı anda çözmek adına $IPList dizi yapısına farklı IP adresleri eklenebilir. 120 | Çözümleme sonuçlarının daha geniş formatta döndürülmesi için, Select komutuna ek alanlar ekleyebilirsiniz. 121 | Daha güvenilir hata yönetimi için, catch kısmında log dosyası gibi bir dış kaynağa da yazdırılabilir. 122 | 123 | Bu makale, fonksiyonun işlevselliğini detaylı bir şekilde inceleyerek, çözümleme işleminin nasıl yapıldığını anlamanıza yardımcı olabilir. 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | --------------------------------------------------------------------------------