├── PowerShellIPScanScript1.ps1 ├── PowerShellIPScanScript2.ps1 └── README.md /PowerShellIPScanScript1.ps1: -------------------------------------------------------------------------------- 1 | 1..254 | %{ping -n 1 -w 15 192.168.101.$_ | select-string "reply from"} 2 | -------------------------------------------------------------------------------- /PowerShellIPScanScript2.ps1: -------------------------------------------------------------------------------- 1 | 1..255 | foreach-object { (new-object system.net.networkinformation.ping).Send("192.168.101.$_") } | where-object {$_.Status -eq "Success"} | select Address 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # PowerShell IP Scanner 2 | ``` 3 | 1..254 | %{ping -n 1 -w 15 192.168.101.$_ | select-string "reply from"} 4 | ``` 5 | Bu PowerShell scripti, bir belirli bir IP adres aralığındaki tüm cihazlara ping atarak hangi IP adreslerinin aktif olduğunu tespit etmek için kullanılır. Detaylı bir şekilde inceleyelim: 6 | ``` 7 | 1..254 8 | ``` 9 | Bu ifade, 1'den 254'e kadar olan tüm sayıları temsil eder. Buradaki sayılar, sonuçta IP adreslerinin son oktetini (dördüncü bölümü) temsil edecektir. 10 | ``` 11 | | %{ 12 | ``` 13 | Burada % işareti, ForEach-Object cmdlet'inin kısa kullanımıdır. Bu cmdlet, sol taraftan gelen her bir nesne (bu durumda sayılar) için sağ taraftaki bloğu tekrar tekrar çalıştırır. 14 | ``` 15 | ping -n 1 -w 15 192.168.101.$_ 16 | ``` 17 | -n 1: Her IP adresine yalnızca bir kez ping atılmasını sağlar. 18 | -w 15: Ping cevabı için maksimum 15 milisaniye bekleme süresini belirler. 19 | 192.168.101.$_: Burada $_ değişkeni, ForEach-Object tarafından döngüde sırayla alınan sayıyı temsil eder. Yani her dönüşte $_ değişkeni 1'den 254'e kadar değişir ve bu sayede 192.168.101.1'den 192.168.101.254'e kadar olan IP adreslerine ping atılır. 20 | ``` 21 | | select-string "reply from" 22 | ``` 23 | Bu komut, ping komutunun çıktısını filtreler ve yalnızca "reply from" ifadesini içeren satırları (yani ping'e cevap veren IP adreslerini) döndürür. 24 | 25 | Scriptin Kullanımı 26 | 27 | Bu script, ağda hangi cihazların çevrimiçi olduğunu hızlı bir şekilde tespit etmek için kullanılabilir. IP bloğu ve parametreler değiştirilerek sisteminiz için uygun hale getirmeniz önelidir. Özellikle ağ yöneticileri tarafından aşağıdaki amaçlar için kullanılır: 28 | 29 | Ağ Taraması: Ağ üzerinde aktif olan cihazları tespit etmek. 30 | Güvenlik Kontrolleri: Yetkisiz cihazların ağa erişip erişmediğini kontrol etmek. 31 | Ağ Bakımı: Ağ üzerindeki cihazların durumunu düzenli olarak kontrol ederek, olası problemleri önceden tespit etmek. 32 | 33 | Neden Kullanılır? 34 | 35 | Hızlı Tarama: Büyük bir IP aralığını hızlıca tarayarak hangi cihazların çevrimiçi olduğunu belirleyebilir. 36 | Basitlik: Script çok basit ve anlaşılır olduğu için, özelleştirmeler yapmak veya belirli bir ağ segmentini hedeflemek kolaydır. 37 | Otomasyon: Bu tarama işlemini düzenli aralıklarla otomatik olarak çalışacak şekilde ayarlayabilirsiniz, böylece manuel kontrol ihtiyacını azaltırsınız. 38 | 39 | Alternatrif olarak aşağıdaki scriptde kullanılabilir 40 | 41 | ``` 42 | 1..255 | foreach-object { (new-object system.net.networkinformation.ping).Send("192.168.101.$_") } | where-object {$_.Status -eq "Success"} | select Address 43 | ``` 44 | Bu alternatif PowerShell scripti, bir IP adres aralığını taramak için kullanılan bir başka yöntemdir ve ağ üzerinde aktif olan cihazların IP adreslerini tespit etmek amacıyla kullanılır. Detaylı bir şekilde açıklayalım: 45 | ``` 46 | 1..255 47 | ``` 48 | Bu ifade, 1'den 255'e kadar olan sayıları temsil eder. Bu sayılar, sonuçta IP adreslerinin son oktetini (dördüncü bölümü) oluşturur. 49 | ``` 50 | | foreach-object { 51 | ``` 52 | foreach-object cmdlet'i, sol taraftan gelen sayı dizisi üzerinde döngü yapar ve her bir sayı için sağ taraftaki bloğu çalıştırır. 53 | ``` 54 | (new-object system.net.networkinformation.ping).Send("192.168.101.$_") 55 | ``` 56 | new-object system.net.networkinformation.ping: .NET Framework'ün System.Net.NetworkInformation.Ping sınıfından bir nesne oluşturur. Bu nesne, ağ üzerindeki cihazlara ICMP echo request göndermek için kullanılır. 57 | .Send("192.168.101.$_"): Oluşturulan ping nesnesi ile 192.168.101.x şeklinde belirtilen IP adresine ping gönderir. Burada $_ değişkeni, foreach-object tarafından sağlanan her bir sayıyı temsil eder. 58 | ``` 59 | | where-object {$_.Status -eq "Success"} 60 | ``` 61 | Bu komut, ping cevabının durumunu kontrol eder ve yalnızca başarılı (Success) olan cevapları filtreler. Yani sadece cevap veren (ulaşılabilir olan) IP adreslerini geçirir. 62 | ``` 63 | | select Address 64 | ``` 65 | select Address ifadesi, başarılı ping sonuçlarının IP adreslerini seçer ve listeler. 66 | 67 | Scriptin Kullanımı 68 | 69 | Bu script, özellikle aşağıdaki amaçlar için kullanılır: 70 | 71 | Ağ Taraması: Ağ üzerinde hangi cihazların aktif olduğunu tespit etmek. 72 | Güvenlik Denetimi: Yetkisiz cihazların ağa erişip erişmediğini kontrol etmek. 73 | Ağ Yönetimi: Ağ sağlığını ve cihazların bağlantı durumunu izlemek. 74 | 75 | Neden Kullanılır? 76 | 77 | Daha Güçlü ve Esnek: .NET Framework kullanarak daha güçlü ve esnek bir yapı sunar. 78 | Detaylı Yanıt Seçenekleri: Ping sınıfı, zaman aşımı gibi ek bilgileri yönetme imkanı verir. 79 | Programatik Kontrol: Script, daha karmaşık senaryolarda genişletilebilir ve entegre edilebilir, örneğin başarısız pingler için yeniden deneme mekanizmaları ekleyebilirsiniz. 80 | 81 | Bu scriptler, sistem ve ağ yöneticileri için vazgeçilmez bir araçtır, çünkü büyük ve dinamik ağ yapılarını etkili bir şekilde izlemelerine olanak tanır. 82 | 83 | --------------------------------------------------------------------------------