PowerShell ile Windows Ağ (Network) Yönetimi
Hedef Kitle: Sistem Yöneticileri, Siber Güvenlik Uzmanları, Ağ Yöneticileri, BT Öğretmenleri, Öğrenciler
İçindekiler
Windows Ağ Mimarisi
PowerShell ve Ağ Yönetimi
Ağ Bağdaştırıcılarını Yönetme
IP Yapılandırması
DNS Yönetimi
DHCP Yönetimi
Gateway Yönetimi
Ağ Profilleri
Ağ Paylaşımları
TCP/UDP Bağlantıları
Port Yönetimi
Firewall ile Ağ Yönetimi
Ağ Tanılama
Route (Yönlendirme)
VPN Yönetimi
Proxy Ayarları
IPv6 Yönetimi
Hyper-V Sanal Ağları
Ağ Performans Analizi
Güvenlik Açısından Ağ Yönetimi
Gerçek Sistem Yönetimi Senaryoları
1. Windows Ağ Mimarisi
Windows ağ sistemi birçok bileşenden oluşur.
Uygulama│Winsock│TCP / UDP│IPv4 / IPv6│Ethernet / WiFi│Network Adapter│Fiziksel Ağ
PowerShell bu katmanların büyük bölümünü yönetebilir.
Ağ Modülleri
Get-Module NetTCPIP
Get-Module NetAdapter
Get-Module DnsClient
Get-Module NetSecurity
Yüklü ağ komutları:
Get-Command -Module NetTCPIP
200'den fazla ağ komutu listelenebilir.
2. Ağ Bağdaştırıcılarını Yönetme
Tüm Adaptörleri Listeleme
Get-NetAdapter
Örnek çıktı
EthernetWi-FiBluetooth NetworkvEthernet
Ayrıntılı Bilgi
Get-NetAdapter | Format-List *
Gösterilen bilgiler
MAC Address
Link Speed
Driver
Status
Interface Index
MTU
VLAN
Sadece Aktif Adaptörler
Get-NetAdapter | Where Status -eq Up
Adaptörü Devre Dışı Bırakma
Disable-NetAdapter -Name "Ethernet"
Yeniden Etkinleştirme
Enable-NetAdapter -Name "Ethernet"
Adaptörü Yeniden Başlatma
Restart-NetAdapter -Name Ethernet
3. IP Yapılandırması
Mevcut IP
Get-NetIPAddress
IPv4
Get-NetIPAddress -AddressFamily IPv4
IPv6
Get-NetIPAddress -AddressFamily IPv6
Statik IP Atama
New-NetIPAddress `-InterfaceAlias Ethernet `-IPAddress 192.168.1.100 `-PrefixLength 24 `-DefaultGateway 192.168.1.1
IP Silme
Remove-NetIPAddress `-IPAddress 192.168.1.100
DHCP'ye Geri Dönme
Set-NetIPInterface `-InterfaceAlias Ethernet `-Dhcp Enabled
4. DNS Yönetimi
DNS Sunucularını Görüntüleme
Get-DnsClientServerAddress
DNS Değiştirme
Set-DnsClientServerAddress `-InterfaceAlias Ethernet `-ServerAddresses ("8.8.8.8","1.1.1.1")
DHCP DNS
Set-DnsClientServerAddress `-ResetServerAddresses
DNS Cache
Get-DnsClientCache
Cache Temizleme
Clear-DnsClientCache
5. DHCP Yönetimi
DHCP Durumu
Get-NetIPInterface
DHCP Aç
Set-NetIPInterface `-Dhcp Enabled
DHCP Yenile
ipconfig /renew
PowerShell'den:
Invoke-Expression "ipconfig /renew"
6. Varsayılan Ağ Geçidi (Gateway)
Gateway Görüntüleme
Get-NetRoute -DestinationPrefix 0.0.0.0/0
Yeni Gateway
New-NetRoute `-DestinationPrefix 0.0.0.0/0 `-NextHop 192.168.1.1 `-InterfaceAlias Ethernet
7. Ağ Profilleri
Mevcut Profil
Get-NetConnectionProfile
Örnek
PublicPrivateDomain
Private Yap
Set-NetConnectionProfile `-NetworkCategory Private
8. SMB Ağ Paylaşımları
Paylaşımlar
Get-SmbShare
Yeni Paylaşım
New-SmbShare `-Name Ortak `-Path D:\Ortak
Silme
Remove-SmbShare `-Name Ortak
9. TCP Bağlantıları
Tüm Bağlantılar
Get-NetTCPConnection
Dinleyen Portlar
Get-NetTCPConnection `-State Listen
Belirli Port
Get-NetTCPConnection `-LocalPort 443
10. UDP
Get-NetUDPEndpoint
11. Port Kontrolü
Test-NetConnection google.com -Port 443
Sonuç
TcpTestSucceeded : True
12. Ping
Test-Connection 8.8.8.8
Sürekli Ping
Test-Connection google.com -Count 20
13. Traceroute
Test-NetConnection `-TraceRoute `google.com
14. Route Tablosu
Get-NetRoute
Belirli Route
Get-NetRoute `-DestinationPrefix 192.168.0.0/24
15. ARP Tablosu
Get-NetNeighbor
MAC Adresi
Get-NetNeighbor `| Select IPAddress,LinkLayerAddress
16. Hyper-V Ağları
Virtual Switch
Get-VMSwitch
Yeni Switch
New-VMSwitch `-Name LAB `-NetAdapterName Ethernet
17. Ağ İstatistikleri
Get-NetAdapterStatistics
Gösterir
Gönderilen Paket
Alınan Paket
CRC Hatası
Drop
Broadcast
Multicast
18. MTU
Göster
Get-NetIPInterface
Değiştir
Set-NetIPInterface `-NlMtuBytes 1500
19. VLAN
Get-NetAdapterAdvancedProperty
20. Güvenlik
SMB Sürümü
Get-SmbServerConfiguration
SMBv1
Get-WindowsOptionalFeature `-Online `-FeatureName SMB1Protocol
LLMNR
Get-ItemProperty `HKLM:\Software\Policies\Microsoft\Windows NT\DNSClient
NetBIOS
Get-WmiObject `Win32_NetworkAdapterConfiguration
21. Ağ Tanılama
DNS
Resolve-DnsName microsoft.com
Port Testi
Test-NetConnection 192.168.1.10 -Port 3389
HTTP Testi
Invoke-WebRequest https://example.com
NIC Bilgisi
Get-NetAdapterHardwareInfo
Bağlantı Hızı
Get-NetAdapter | Select Name,LinkSpeed
22. Ağ Performansı İzleme
Aktif TCP bağlantıları:
Get-NetTCPConnection |Group-Object State
En fazla bağlantı kuran uzak IP adresleri:
Get-NetTCPConnection |Group-Object RemoteAddress |Sort-Object Count -Descending |Select-Object -First 10
Bağdaştırıcı istatistiklerini düzenli izleme:
while ($true) {Clear-HostGet-NetAdapterStatistics |Select-Object Name,ReceivedBytes,SentBytesStart-Sleep -Seconds 2}
23. Siber Güvenlik Açısından En İyi Uygulamalar
SMBv1'i devre dışı bırakın.
Kullanılmayan ağ bağdaştırıcılarını kapatın.
Ağ profilini doğru yapılandırın (Etki Alanı/Özel/Genel).
Gereksiz açık portları düzenli olarak kontrol edin.
DNS önbelleğini şüpheli durumlarda temizleyin.
Yalnızca güvenilir DNS sunucularını kullanın.
Ağ trafiğini Windows Güvenlik Duvarı günlükleriyle izleyin.
PowerShell Remoting için HTTPS veya güvenilir yönetim ağlarını tercih edin.
Düzenli olarak
Get-NetTCPConnectionveGet-NetNeighborçıktılarıyla anormal bağlantıları inceleyin.
24. Gerçek Sistem Yönetimi Senaryoları
Senaryo 1: Statik IP Atama
New-NetIPAddress `-InterfaceAlias "Ethernet" `-IPAddress "10.10.10.50" `-PrefixLength 24 `-DefaultGateway "10.10.10.1"Set-DnsClientServerAddress `-InterfaceAlias "Ethernet" `-ServerAddresses "10.10.10.10","1.1.1.1"
Senaryo 2: RDP Hizmetini Test Etme
Test-NetConnection 192.168.10.20 -Port 3389
Senaryo 3: Dinleyen Portları Listeleme
Get-NetTCPConnection -State Listen |Sort-Object LocalPort
Senaryo 4: Ağ Profilini Değiştirme
Get-NetConnectionProfile |Set-NetConnectionProfile -NetworkCategory Private
Senaryo 5: En Fazla Uzak Bağlantıya Sahip IP'leri Bulma
Get-NetTCPConnection |Where-Object RemoteAddress -notin @("::","0.0.0.0") |Group-Object RemoteAddress |Sort-Object Count -Descending |Select-Object -First 10 Name,Count
Sonuç
PowerShell, Windows ağ yönetimi için grafik arayüzün çok ötesinde bir kontrol sunar. Tek bir komutla ağ bağdaştırıcılarını yönetebilir, IP ve DNS yapılandırmasını değiştirebilir, bağlantıları analiz edebilir, yönlendirme tablolarını düzenleyebilir, ağ performansını izleyebilir ve güvenlik kontrolleri gerçekleştirebilirsiniz. Modern Windows Server ve Windows 10/11 sistem yöneticileri için NetTCPIP, NetAdapter, DnsClient, NetSecurity ve SmbShare modüllerine hakim olmak; otomasyon, güvenlik ve hızlı sorun giderme açısından önemli bir yetkinlik sağlar.
PowerShell, Windows Server ve istemci (client) işletim sistemlerinde ağ yapılandırmasını yönetmek ve sorun gidermek için geleneksel Komut İstemine (CMD) kıyasla çok daha güçlü, esnek ve nesne tabanlı bir ortam sunar. Eski dostlarımız olan ipconfig, ping, tracert ve netstat gibi komutların yerini alan modern PowerShell cmdlet'leri, özellikle otomasyon betikleri yazarken hayat kurtarır.
Bu eğitim makalesinde, Windows ağ yönetiminde en çok kullanılan PowerShell komutlarını ve kullanım senaryolarını adım adım inceleyeceğiz.
Önemli Not: Ağ yapılandırmasını değiştiren (Set, New, Disable vb.) komutların çalışabilmesi için PowerShell'i mutlaka Yönetici Olarak Çalıştır (Run as Administrator) seçeneğiyle açmalısınız.
1. Ağ Bağdaştırıcılarını (Kayıtlı Cihazları) Yönetmek
Ağ yönetimine başlarken ilk bilmeniz gereken şey, sistemdeki fiziksel ve sanal ağ kartlarının (NIC) durumudur. Bu işlemler için NetAdapter modülünü kullanırız.
Bağdaştırıcıları Listelemek
Sistemdeki tüm ağ kartlarını, hızlarını, MAC adreslerini ve durumlarını (Up/Disconnected) görmek için kullanılır:
Get-NetAdapter
Sadece aktif olan (bağlı) ağ kartlarını listelemek isterseniz, nesne tabanlı filtreleme yapabilirsiniz:
Get-NetAdapter | Where-Object Status -eq "Up"
Bağdaştırıcıyı Kapatıp Açmak
Bir ağ kartını devre dışı bırakmak veya yeniden başlatmak (özellikle sorun giderme sırasında) çok yaygındır. Bu işlemlerde kartın adını (Name) veya indeks numarasını (InterfaceIndex) kullanabilirsiniz.
# Ağ kartını devre dışı bırakmak (Onay istememesi için -Confirm:$false eklenebilir)Disable-NetAdapter -Name "Ethernet"
# Ağ kartını etkinleştirmekEnable-NetAdapter -Name "Ethernet"
# Ağ kartını yeniden başlatmak (Kapatıp açmak)Restart-NetAdapter -Name "Ethernet"2. IP ve DNS Yapılandırması (Eski ipconfig)
Eskiden IP detaylarını görmek için ipconfig /all kullanırdık. PowerShell'in NetTCPIP modülü bu işi çok daha detaylı bir seviyeye taşır.
Mevcut IP Adreslerini Görmek
Bilgisayarınızdaki IPv4 adreslerini listelemek için:
Get-NetIPAddress -AddressFamily IPv4
Bu komut oldukça fazla bilgi döndürür. Sadece işinize yarayan kısımları (IP adresi, arayüz adı ve alt ağ maskesi) görmek için tablo formatında (Format-Table) biçimlendirebilirsiniz:
Get-NetIPAddress -AddressFamily IPv4 | Format-Table InterfaceAlias, IPAddress, PrefixLength
Statik IP Adresi Atamak
Bir ağ kartına manuel olarak IP adresi, Alt Ağ Maskesi (PrefixLength olarak ifade edilir; örn: 255.255.255.0 için 24) ve Varsayılan Ağ Geçidi (Gateway) atamak için New-NetIPAddress kullanılır.
New-NetIPAddress -InterfaceAlias "Ethernet" -IPAddress "192.168.1.50" -PrefixLength 24 -DefaultGateway "192.168.1.1"
(Eğer arayüzde zaten bir IP varsa ve değiştirmek istiyorsanız Set-NetIPAddress kullanmalısınız.)
DNS Sunucularını Ayarlamak
Manuel IP atadıktan sonra internete çıkabilmek için DNS sunucularını da belirlemeniz gerekir.
# Google ve Cloudflare DNS'lerini birincil ve ikincil olarak ayarlamaSet-DnsClientServerAddress -InterfaceAlias "Ethernet" -ServerAddresses ("8.8.8.8", "1.1.1.1")DHCP'ye Geri Dönmek (Otomatik IP Alma)
Eğer statik IP'den vazgeçip tekrar DHCP üzerinden otomatik IP almak isterseniz, hem IP'yi hem de DNS'i sıfırlamanız gerekir:
# IP adresini DHCP'ye çekmekSet-NetIPInterface -InterfaceAlias "Ethernet" -Dhcp Enabled
# DNS ayarlarını DHCP'ye bırakmakSet-DnsClientServerAddress -InterfaceAlias "Ethernet" -ResetServerAddresses3. Ağ Teşhisi ve Sorun Giderme
Sorun giderme aşamasında PowerShell'in sunduğu teşhis araçları, eski komut istemi araçlarından çok daha yeteneklidir.
Test-NetConnection (Ping ve Telnet'in Birleşimi)
PowerShell'in en sevilen ağ komutlarından biridir. Sadece ping atmakla kalmaz, aynı zamanda belirli bir portun açık olup olmadığını da test edebilir. ping ve telnet ihtiyacını tek komutta çözer.
# Basit Ping testiTest-NetConnection -ComputerName "google.com"
# Belirli bir porta (Örn: RDP portu 3389) bağlantı testiTest-NetConnection -ComputerName "192.168.1.20" -Port 3389
# Tracert (Yönlendirme izleme) yapmak içinTest-NetConnection -ComputerName "google.com" -TraceRouteResolve-DnsName (nslookup'ın Alternatifi)
Bir alan adının (domain) IP adreslerini (A, AAAA, MX, TXT kayıtları) çözümlemek için kullanılır.
Resolve-DnsName -Name "microsoft.com" -Type A
Get-NetTCPConnection (netstat Alternatifi)
Bilgisayarınızdaki mevcut ağ bağlantılarını, dinlenen (Listening) portları ve kurulan (Established) oturumları görmek için kullanılır.
# Sadece kurulan (bağlanmış) oturumları listeleGet-NetTCPConnection -State Established
# Hangi işlemin (Process) hangi portu kullandığını bulmak içinGet-NetTCPConnection -LocalPort 4434. Gelişmiş Yönlendirme (Routing)
Özellikle birden fazla ağ kartı olan cihazlarda, trafiğin hangi ağ geçidinden gideceğini bilmek önemlidir.
Yönlendirme Tablosunu Görmek (route print Alternatifi)
Sistemdeki mevcut IPv4 yönlendirme tablosunu görmek için:
Get-NetRoute -AddressFamily IPv4
İpucu: PowerShell komutları nesne döndürdüğü için bu komutların sonuna
| Export-Csv -Path "C:\rapor.csv"ekleyerek ağ dökümünüzü tek satırda Excel uyumlu bir rapora dönüştürebilirsiniz.
Yorumlar