From 45b3bf96b7a06405b01eb2c9f41c399bbefad7d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mustafa=20=C3=96ZKAYA?= Date: Mon, 13 Apr 2026 12:54:03 +0300 Subject: [PATCH] README.md Ekle --- README.md | 230 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 230 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..b37694b --- /dev/null +++ b/README.md @@ -0,0 +1,230 @@ +# NetworkManager.ps1 + +Windows ağ adaptörlerini görsel arayüz üzerinden listelemeye, etkinleştirmeye ve devre dışı bırakmaya yarayan bir PowerShell GUI aracı. + +--- + +## İçindekiler + +- [Gereksinimler](#gereksinimler) +- [Kurulum](#kurulum) +- [Çalıştırma Yöntemleri](#çalıştırma-yöntemleri) +- [Arayüz](#arayüz) +- [Özellikler](#özellikler) +- [Kod Yapısı](#kod-yapısı) +- [Kullanılan PowerShell Cmdlet'leri](#kullanılan-powershell-cmdletleri) +- [Bilinen Sınırlamalar](#bilinen-sınırlamalar) +- [Sık Karşılaşılan Sorunlar](#sık-karşılaşılan-sorunlar) + +--- + +## Gereksinimler + +| Gereksinim | Detay | +|---|---| +| İşletim Sistemi | Windows 10 / Windows 11 | +| PowerShell | 5.1 veya üzeri (Windows ile birlikte gelir) | +| .NET Framework | 4.x (Windows ile birlikte gelir) | +| Yetki | **Yönetici (Administrator)** zorunlu | + +--- + +## Kurulum + +Script tek dosyadan oluşur, kurulum gerektirmez. Sabit ve erişimi kolay bir klasöre kopyalamak yeterli: + +``` +C:\Scripts\NetworkManager.ps1 +``` + +--- + +## Çalıştırma Yöntemleri + +### 1. PowerShell konsolundan + +PowerShell'i **Yönetici olarak çalıştır** ile açın, ardından: + +```powershell +Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass +.\NetworkManager.ps1 +``` + +### 2. Sağ tıkla çalıştır + +Dosyaya sağ tıklayın → **PowerShell ile çalıştır** seçin. Windows UAC yetki yükseltme penceresi açacaktır. + +### 3. Masaüstü kısayolu (önerilen) + +**Adım 1:** Masaüstüne sağ tıklayın → **Yeni → Kısayol** + +**Adım 2:** Hedef olarak aşağıdakini yazın: + +``` +powershell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -File "C:\Scripts\NetworkManager.ps1" +``` + +**Adım 3:** Kısayola sağ tıklayın → **Özellikler → Gelişmiş → Yönetici olarak çalıştır** kutusunu işaretleyin. + +**Adım 4 (isteğe bağlı):** Özellikler penceresinde **Kısayol tuşu** alanına tıklayıp istediğiniz kombinasyonu atayın (örn. `Ctrl + Alt + N`). + +> **Not:** Klavye kısayolu yalnızca kısayol dosyası masaüstünde durduğu sürece her yerden çalışır. + +### 4. .bat dosyası ile + +Script'in bulunduğu klasöre `NetworkManager.bat` adında bir dosya oluşturun: + +```batch +@echo off +powershell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -File "%~dp0NetworkManager.ps1" +``` + +Bu `.bat` dosyasına sağ tıklayıp kısayol oluşturun, kısayol özelliklerinden **Gelişmiş → Yönetici olarak çalıştır** seçeneğini etkinleştirin. + +--- + +## Arayüz + +``` +┌─────────────────────────────────────────────────────────────────┐ +│ Ag Arayuzu Yoneticisi ADMIN │ ← Başlık (koyu lacivert) +├──────────┬──────────────────┬────────┬─────────┬───────┬───────┤ +│ Arayüz │ Açıklama │ Durum │ Tip │ MAC │ IPv4 │ ← Sütun başlıkları +├──────────┼──────────────────┼────────┼─────────┼───────┼───────┤ +│ Ethernet │ Intel(R) I225-V │ Etkin │Ethernet │ AA:BB │ 192.. │ +│ Wi-Fi │ Realtek 802.11ac │ Etkin │ Wi-Fi │ CC:DD │ 10.. │ +│ Bluetooth│ BT Device (PAN) │Dev.Dışı│Bluetooth│ - │ - │ +│ vEthernet│ Hyper-V vSwitch │ Etkin │ Hyper-V │ EE:FF │ 172.. │ +├──────────┴──────────────────┴────────┴─────────┴───────┴───────┤ +│ [ Etkinleştir ] [ Devre Dışı ] [ Yenile ] │ ← Buton paneli +├─────────────────────────────────────────────────────────────────┤ +│ Seçili: Ethernet | Etkin | IPv4: 192.168.1.100 │ ← Durum çubuğu +└─────────────────────────────────────────────────────────────────┘ +``` + +### Renk kodları + +| Renk | Anlam | +|---|---| +| Yeşil metin | Adaptör durumu: Etkin (Up) | +| Kırmızı metin | Adaptör durumu: Devre dışı (Disabled) | +| Gri metin | Bağlı değil / Mevcut değil | +| Yeşil buton arka planı | Etkinleştir eylemi | +| Kırmızı buton arka planı | Devre Dışı Bırak eylemi | + +--- + +## Özellikler + +### Listeleme +- Sistemdeki **tüm** ağ adaptörleri listelenir (`-IncludeHidden` ile gizli/sanal adaptörler dahil) +- Her adaptör için şu bilgiler gösterilir: Arayüz Adı, Açıklama, Durum, Tip, MAC Adresi, IPv4, IPv6 +- IPv6 adresleri global ve link-local (fe80) olarak ayrıştırılır; link-local adresler `(LL)` etiketi ile işaretlenir +- Adaptörler isme göre alfabetik sıralanır + +### Etkinleştir / Devre Dışı Bırak +- Listeden bir adaptör seçip **Etkinleştir** veya **Devre Dışı** butonuna tıklanır +- Devre dışı bırakmadan önce onay kutusu gösterilir +- İşlem tamamlandıktan sonra liste otomatik yenilenir +- **Çift tıklama** ile toggle yapılır: etkinse devre dışı bırakır, devre dışıysa etkinleştirir + +### Yenile +- **Yenile** butonu adaptör listesini ve IP adreslerini güncel verilerle yeniden yükler + +### Durum çubuğu +- Uygulama genelinde bilgi mesajları gösterir +- Seçili adaptörün adı, durumu ve IP adresleri anlık olarak görüntülenir + +--- + +## Kod Yapısı + +Script tek dosyadan oluşur ve bölümler yorum satırları ile ayrılmıştır. + +``` +NetworkManager.ps1 +│ +├── Renkler & Fontlar → Tüm renk ve font tanımları +│ +├── Ana Form → System.Windows.Forms.Form yapılandırması +│ +├── TableLayoutPanel (3 satır) +│ ├── Satır 0 – pnlTop → Başlık (48px) + Sütun başlıkları (24px) +│ ├── Satır 1 – ListView → Adaptör listesi (kalan alan, Dock=Fill) +│ └── Satır 2 – pnlBottom → Butonlar (56px) + Durum çubuğu (26px) +│ +├── Load-Adapters() → Adaptörleri sorgular ve ListView'e ekler +│ ├── Get-NetAdapter → Adaptör bilgileri +│ └── Get-NetIPAddress → IP adresleri (InterfaceIndex ile eşleştirilir) +│ +├── SelectedIndexChanged → Seçim değişince durum çubuğunu günceller +│ +├── btnEnable.Click → Enable-NetAdapter çağırır +├── btnDisable.Click → Onay → Disable-NetAdapter çağırır +├── btnRefresh.Click → Load-Adapters() çağırır +└── lv.DoubleClick → Duruma göre Enable/Disable toggle yapar +``` + +### Layout mimarisi + +Windows Forms'da `Dock` çakışmasını önlemek için `TableLayoutPanel` tercih edilmiştir. Satır yükseklikleri şöyle tanımlanmıştır: + +```powershell +Satır 0 → SizeType::Absolute, 72px # Başlık + sütun başlıkları +Satır 1 → SizeType::Percent, 100% # Liste (form yeniden boyutlandırılınca esner) +Satır 2 → SizeType::Absolute, 82px # Butonlar + durum çubuğu +``` + +Bu yapı sayesinde form boyutu değiştiğinde yalnızca liste alanı büyür/küçülür; başlık ve buton panelleri sabit kalır. + +### SubItems.Add hatası ve çözümü + +`ListView.Items.Add()` ve `SubItems.Add()` metodları `ListViewItem` nesnesi döndürür. PowerShell pipeline'ı bu dönüş değerini `System.Object[]` olarak sarmaladığında sonraki `Add` çağrısıyla tip çakışması oluşur. Çözüm olarak tüm `.Add()` çağrıları `| Out-Null` ile sonlandırılmış, değerler `[string]` cast'ı ile kesin olarak stringe dönüştürülmüştür: + +```powershell +$row.SubItems.Add([string]$a.InterfaceDescription) | Out-Null +``` + +--- + +## Kullanılan PowerShell Cmdlet'leri + +| Cmdlet | Amaç | +|---|---| +| `Get-NetAdapter -IncludeHidden` | Tüm ağ adaptörlerini listeler (gizli/sanal dahil) | +| `Get-NetIPAddress` | Adaptöre atanmış IP adreslerini döndürür | +| `Enable-NetAdapter` | Seçili adaptörü etkinleştirir | +| `Disable-NetAdapter` | Seçili adaptörü devre dışı bırakır | + +--- + +## Bilinen Sınırlamalar + +- **Yönetici yetkisi zorunludur.** `#Requires -RunAsAdministrator` direktifi ile zorunlu tutulmuştur; yönetici yetkisi olmadan script çalışmaz. +- **IP adresleri anlık değildir.** IP bilgileri Yenile butonuna basılana kadar liste yüklendiğindeki değerleri gösterir. DHCP yenileme gibi sonradan gerçekleşen değişiklikler otomatik yansımaz. +- **Yalnızca Windows.** Script `System.Windows.Forms`, `Get-NetAdapter` ve `Get-NetIPAddress` kullandığından yalnızca Windows 10/11 üzerinde çalışır. +- **WAN Miniport adaptörleri devre dışı bırakılamaz.** Bu adaptörler sistem tarafından yönetilir ve `Disable-NetAdapter` komutunu reddeder; hata mesajı gösterilir. + +--- + +## Sık Karşılaşılan Sorunlar + +**Script çalışmıyor, hata veriyor** + +`ExecutionPolicy` kısıtlaması olabilir. PowerShell'i yönetici olarak açıp şunu çalıştırın: + +```powershell +Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass +``` + +**Türkçe karakterler bozuk görünüyor** + +Script UTF-8 BOM ile kaydedilmiştir. Dosyayı farklı bir editörde açıp yeniden kaydederseniz BOM kaybolabilir. Notepad++, VS Code veya PowerShell ISE ile açarken encoding'in `UTF-8 with BOM` olduğundan emin olun. + +**Bazı adaptörler listede görünmüyor** + +`Get-NetAdapter -IncludeHidden` çalışıyor olmalı. Bazı eski Windows sürümlerinde `-IncludeHidden` parametresi desteklenmeyebilir; script bu durumu `try/catch` ile yönetir ve parametresiz komutu dener. + +**Etkinleştir/Devre Dışı butonu hata veriyor** + +Seçili adaptörün zaten o durumda olup olmadığını kontrol edin. WAN Miniport ve Loopback gibi sistem adaptörleri değiştirilemez. \ No newline at end of file