PowerShell ile Windows'ta Ağ Ayarlarını Yapılandırma: IP Adresi, DNS, Varsayılan Ağ Geçidi, Statik Yollar
Windows'ta, ağ bağdaştırıcılarınızın ayarlarını yalnızca GUI'den değil, aynı zamanda PowerShell komut isteminden de yönetebilirsiniz. Bu yazıda, bir ağ bağdaştırıcısının geçerli IP adresini bulmak, statik bir IP adresi atamak, bir DNS sunucusu IP'si atamak veya bir ağ arabirimini IP alacak şekilde yapılandırmak için kullanabileceğiniz en önemli cmdlet'lere bakacağız. DHCP sunucusundan yapılandırma. Bu cmdlet'leri hem Windows 10/11 hem de Windows Server (veya Server Core sürümleri), Hyper-V Server'da ağ yapılandırmak, uzak bilgisayarlardaki ve PowerShell otomasyon komut dosyalarınızdaki ağ bağdaştırıcılarının IP ayarlarını değiştirmek için kullanabilirsiniz.
Daha önce,
netsh interface ipv4 CLI'den ağ ayarlarını yönetmek için komut kullanıldı. PowerShell 3.0 ve daha yeni sürümlerde, Windows'ta ağ ayarlarını yönetmek için yerleşik NetTCPIP PowerShell modülünü kullanabilirsiniz.
Bu modüldeki cmdlet'lerin listesini almak için aşağıdaki komutu çalıştırın:
get-command -module NetTCPIPBu modül aynı zamanda uzak bilgisayarlarda açık TCP bağlantı noktalarını bulmak için kullanılabilen Test-NetConnection cmdlet'ini de içerir.
PowerShell ile Ağ Bağdaştırıcısı Ayarlarını Yönetme
Bir Windows bilgisayardaki kullanılabilir ağ arabirimlerini listeleyin:
Get-NetAdapterCmdlet arabirim adını, durumunu (Yukarı/Aşağı), MAC adresini ve bağlantı noktası hızını döndürür.
Bu örnekte, bilgisayarımda birkaç ağ bağdaştırıcısı var (fiziksel bağlantı olan Ethernet0 dışında Hyper-V ve VMWare Player ağım var) arayüzler).
Yalnızca etkinleştirilmiş fiziksel ağ arabirimlerini görüntülemek için:
Get-NetAdapter -Physical | ? {$_.Status -eq "Up"}Yalnızca ad, hız, durum veya MAC adresi gibi belirli ağ bağdaştırıcısı parametrelerini görüntüleyebilirsiniz:
Get-NetAdapter |Select-Object name,LinkSpeed,InterfaceOperationalStatus,MacAddressWindows'un bazı gizli ağ bağdaştırıcıları olabilir. Hepsini göstermek için IncludeHidden parametresini ekleyin:
Get-NetAdapter -IncludeHiddenSonuç, VPN dahil olmak üzere farklı bağlantı türleri için kullanılan tüm sanal WAN Miniport adaptörlerinin bir listesi olacaktır. Bu bağdaştırıcıların yeniden başlatılması, genellikle yerleşik Windows istemcisindeki bazı VPN bağlantı hatalarını düzeltir. VPN bağlantılarını yönetmek için ayrı PowerShell cmdlet'leri vardır.
Ağ arabirimlerine adlarına veya dizinlerine (Dizin sütunu) göre başvurabilirsiniz. Örneğimizde, Intel 82574L Gigabit Ağ Bağlantısı fiziksel LAN adaptörünü seçmek için şu komutu kullanın:
Get-NetAdapter -Name Ethernet0veya :
Get-NetAdapter -InterfaceIndex 8Bağdaştırıcı adını değiştirebilirsiniz:
Rename-NetAdapter -Name Ethernet0 -NewName LANBir ağ arabirimini devre dışı bırakmak için şu komutu kullanın:
Get-NetAdapter -Name Ethernet0| Disable-NetAdapterNIC'yi adına göre etkinleştirin:
Enable-NetAdapter -Name Ethernet0Ağ bağdaştırıcısının yapılandırılmış bir VLAN numarası varsa, bunu görüntüleyebilirsiniz:
Get-NetAdapter | ft Name, Status, Linkspeed, VlanIDKullanmakta olduğunuz ağ bağdaştırıcısı sürücüsü hakkındaki bilgileri şu şekilde bulabilirsiniz:
Get-NetAdapter | ft Name, DriverName, DriverVersion, DriverInformation, DriverFileName
Fiziksel ağ bağdaştırıcıları (PCI yuvası, veri yolu vb.) hakkındaki bilgileri listeleyin:
Get-NetAdapterHardwareInfoAğ arabirimi için IPv6 protokolünü devre dışı bırakın:
Get-NetAdapterBinding -InterfaceAlias Ethernet0 | Set-NetAdapterBinding -Enabled:$false -ComponentID ms_tcpip6Bir ağ arabirimi için NetBIOS protokolünü devre dışı bırakın:
Set-NetAdapterBinding -Name Ethernet0 -ComponentID ms_netbios -AllBindings -Enabled $TruePowerShell ile IP Adresi Ayarları Nasıl Alınır?
Windows'ta geçerli ağ bağdaştırıcısı ayarlarını almak için (IP adresi, DNS, varsayılan ağ geçidi):
Get-NetIPConfiguration -InterfaceAlias Ethernet0Ağ arabirimi TCP/IP yapılandırması hakkında daha ayrıntılı bilgi görüntülemek için şu komutu kullanın:
Get-NetIPConfiguration -InterfaceAlias Ethernet0 -DetailedBu durumda arayüzün atanan ağ konumu (profil) (NetProfile.NetworkCategory), MTU ayarları (NetIPv4Interface.NlMTU), DHCP'den IP adresi almanın etkin olup olmadığı (NetIPv4Interface.DHCP) ve bir dizi başka yararlı bilgi görüntülenir.
Yalnızca IPv4 arayüz adresini almak için:
(Get-NetAdapter -Name ethernet0 | Get-NetIPAddress).IPv4AddressYalnızca arayüzün IP adresinin değerini döndürün:
(Get-NetAdapter -Name ethernet0 | Get-NetIPAddress).IPv4AddressDosyaları VM'lere kopyalarken, birçok yönetici, Hyper-V rollerinin etkinleştirildiği Windows Server 2019'da düşük ağ performansını fark etti. Bu durumda, TCP yığın ayarlarının Windows Server 2016'da kullanılan ayarlara geri döndürülmesi, sorunların çözülmesine yardımcı olacaktır:
Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -CongestionProvider DCTCP
Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -CwndRestart True
Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -ForceWS DisabledBir ağ bağdaştırıcısı için etkinleştirilebilen veya devre dışı bırakılabilen ağ protokollerinin bir listesini görüntüleyin:
Get-NetAdapterBinding -Name ethernet0 -IncludeHidden -AllBindingsName DisplayName ComponentID Enabled
---- ----------- ----------- -------
Ethernet File and Printer Sharing for Microsoft Networks ms_server True
Ethernet NetBIOS Interface ms_netbios True
Ethernet Microsoft LLDP Protocol Driver ms_lldp True
Ethernet Microsoft NDIS Capture ms_ndiscap True
Ethernet Internet Protocol Version 4 (TCP/IPv4) ms_tcpip True
Ethernet Microsoft RDMA - NDK ms_rdma_ndk True
Ethernet Microsoft Network Adapter Multiplexor Protocol ms_implat False
Ethernet Link-Layer Topology Discovery Mapper I/O Driver ms_lltdio True
Ethernet NDIS Usermode I/O Protocol ms_ndisuio True
Ethernet Point to Point Protocol Over Ethernet ms_pppoe True
Ethernet Link-Layer Topology Discovery Responder ms_rspndr True
Ethernet Internet Protocol Version 6 (TCP/IPv6) ms_tcpip6 True
Ethernet Hyper-V Extensible Virtual Switch vms_pp False
Ethernet WFP Native MAC Layer LightWeight Filter ms_wfplwf_lower True
Ethernet Client for Microsoft Networks ms_msclient True
Ethernet Npcap Packet Driver (NPCAP) INSECURE_NPCAP True
Ethernet WINS Client(TCP/IP) Protocol ms_netbt True
Ethernet Bridge Driver ms_l2bridge True
Ethernet WFP 802.3 MAC Layer LightWeight Filter ms_wfplwf_upper True
Ethernet QoS Packet Scheduler ms_pacer True
Bir bilgisayarda etkin TCP/IP oturumlarını görüntülemek için Get-NetTCPConnection cmdlet'ini kullanın.
PowerShell Kullanarak Windows'ta Statik IP Adresi Ayarlama
NIC için statik bir IP adresi belirlemeye çalışalım. Bir Ethernet0 ağ arabiriminin IP adresini, ağ maskesini ve varsayılan ağ geçidini değiştirmek için şu komutu kullanın:
Get-NetAdapter -Name Ethernet0| New-NetIPAddress -IPAddress 192.168.2.50 -DefaultGateway 192.168.2.1 -PrefixLength 24 Bir dizi yapısı kullanarak bir IP adresi ayarlayabilirsiniz (daha görsel olarak):
$ipParams = @{
InterfaceIndex = 8
IPAddress = "192.168.2.50"
PrefixLength = 24
AddressFamily = "IPv4"
}
New-NetIPAddress @ipParamsBir ağ bağdaştırıcısına ikinci bir IP adresi (takma ad) eklemek için New-NetIPAddress'i kullanabilirsiniz.
Statik bir IP adresi zaten yapılandırılmışsa ve değiştirilmesi gerekiyorsa Set-NetIPAddress cmdlet'ini kullanın:
Set-NetIPAddress -InterfaceAlias Ethernet0 -IPAddress 192.168.2.90Bağdaştırıcınız için DHCP'den bir IP adresi almayı devre dışı bırakmak için şu komutu çalıştırın:
Set-NetIPInterface -InterfaceAlias Ethernet0 -Dhcp DisabledStatik IP adresini kaldır:
Remove-NetIPAddress -IPAddress "xxx.xxx.xxx.xxx"PowerShell ile Windows'ta DNS Sunucusu IP Adreslerini Ayarlama
Windows'ta tercih edilen ve alternatif DNS sunucusu IP adreslerini ayarlamak için Set-DNSClientServerAddress cmdlet'ini kullanın. Örneğin:
Set-DNSClientServerAddress -InterfaceIndex 8 -ServerAddresses 192.168.2.11,10.1.2.11Bir dizi kullanarak DNS ad sunucusu IP'lerini de belirleyebilirsiniz:
$dnsParams = @{
InterfaceIndex = 8
ServerAddresses = ("8.8.8.8","8.8.4.4")
}
Set-DnsClientServerAddress @dnsParamsDNS ayarlarını değiştirdikten sonra, DNS çözümleyici önbelleğini temizleyebilirsiniz (şuna eşdeğerdir:
ipconfig /flushdns):
Clear-DnsClientCacheWindows'ta DNS önbellek içeriğini görüntüle::
Get-DnsClientCacheYönlendirme Tablolarını PowerShell ile Yönetme
Yönlendirme tablosunu görüntülemek için Get-NetRoute cmdlet'i kullanılır.
Windows'ta bir fiziksel ağ arabirimi için varsayılan ağ geçidi yolunu alın:
Get-NetAdapter -Physical | ? {$_.Status -eq "Up"}| Get-netroute| where DestinationPrefix -eq "0.0.0.0/0"Yeni bir rota eklemek için New-NetRoute cmdlet'ini kullanın:
New-NetRoute -DestinationPrefix "0.0.0.0/0" -NextHop "192.168.2.2" -InterfaceIndex 8Bu komut, yönlendirme tablosuna kalıcı bir rota ekler (benzer
route -p add). Geçici bir rota eklemek istiyorsanız,
-PolicyStore "ActiveStore"seçenek. Bu rota, Windows yeniden başlatıldıktan sonra silinecek.
Yönlendirme tablosundan bir rotayı kaldırın:
Remove-NetRoute -NextHop 192.168.0.1 -Confirm:$FalsePowerShell: Bağdaştırıcıyı Statik IP Adresinden DHCP'ye Değiştirin
Bilgisayarınızı, ağ bağdaştırıcısı için DHCP sunucusundan dinamik bir IP adresi alacak şekilde yapılandırmak için şu komutu çalıştırın:
Set-NetIPInterface -InterfaceAlias Ethernet0 -Dhcp EnabledDNS sunucusu ayarlarını temizleyin:
Set-DnsClientServerAddress -InterfaceAlias Ethernet0 -ResetServerAddressesDHCP sunucusundan otomatik olarak bir IP adresi almak için ağ bağdaştırıcınızı yeniden başlatın:
Restart-NetAdapter -InterfaceAlias Ethernet0Önceden yapılandırılmış bir varsayılan ağ geçidiniz varsa, onu kaldırın:
Set-NetIPInterface -InterfaceAlias Ethernet0| Remove-NetRoute -Confirm:$falseBilgisayarın ağ arabirimleri için tüm IPv4 ayarlarını sıfırlamanız ve DHCP'den dinamik bir IP adresi alacak şekilde değiştirmeniz gerekirse, aşağıdaki komut dosyasını kullanın:
$IPType = "IPv4"
$adapter = Get-NetAdapter | ? {$_.Status -eq "up"}
$interface = $adapter | Get-NetIPInterface -AddressFamily $IPType
If ($interface.Dhcp -eq "Disabled") {
If (($interface | Get-NetIPConfiguration).Ipv4DefaultGateway) {
$interface | Remove-NetRoute -Confirm:$false
}
$interface | Set-NetIPInterface -DHCP Enabled
$interface | Set-DnsClientServerAddress -ResetServerAddresses
}PowerShell ile Birden Çok Bilgisayarda Uzaktan DNS ve IP Adreslerini Değiştirme
Birden çok uzak bilgisayarda IP adresini veya DNS sunucusu ayarlarını uzaktan değiştirmek için PowerShell'i kullanabilirsiniz.
Diyelim ki göreviniz, belirli AD Kuruluş Birimi'ndeki (OU) tüm Windows Server ana bilgisayarlarındaki DNS ayarlarını değiştirmek. Aşağıdaki komut dosyası, Active Directory'den bilgisayarların listesini almak için Get-ADComputer cmdlet'ini kullanır ve ardından uzak bilgisayarlara WinRM aracılığıyla bağlanır (Invoke-Command cmdlet'i kullanılır):
$Servers = Get-ADComputer -SearchBase ‘OU=Servers,OU=Berlin,OU=DE,DC=a-d,DC=cpm’ -Filter '(OperatingSystem -like "Windows Server*")' | Sort-Object Name
ForEach ($Server in $Servers) {
Write-Host "Server $($Server.Name)"
Invoke-Command -ComputerName $Server.Name -ScriptBlock {
$NewDnsServerSearchOrder = "192.168.2.11","8.8.8.8"
$Adapters = Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object {$_.DHCPEnabled -ne 'True' -and $_.DNSServerSearchOrder -ne $null}
Write-Host "Old DNS settings: "
$Adapters | ForEach-Object {$_.DNSServerSearchOrder}
$Adapters | ForEach-Object {$_.SetDNSServerSearchOrder($NewDnsServerSearchOrder)} | Out-Null
$Adapters = Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object {$_.DHCPEnabled -ne 'True' -and $_.DNSServerSearchOrder -ne $null}
Write-Host "New DNS settings: "
$Adapters | ForEach-Object {$_.DNSServerSearchOrder}
}
}








