2026-04-13 12:56:24 +03:00
2026-04-13 12:56:24 +03:00

hOLOlu Ag Arayüz Yönetcisi (hInterfaceManager)

Windows ağ adaptörlerini görsel arayüz üzerinden listelemeye, etkinleştirmeye ve devre dışı bırakmaya yarayan bir PowerShell GUI aracı.


İçindekiler


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\hInterfaceManager.ps1

Çalıştırma Yöntemleri

1. PowerShell konsolundan

PowerShell'i Yönetici olarak çalıştır ile açın, ardından:

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\hInterfaceManager.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 hInterfaceManager.bat adında bir dosya oluşturun:

@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.

hInterfaceManager.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:

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:

$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:

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.

Description
hOLOlu Ağ Arayüzü Yöneticisi
Readme 37 KiB
Languages
PowerShell 100%