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 NetTCPIP

Bu 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-NetAdapter

Cmdlet 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,MacAddress

Windows'un bazı gizli ağ bağdaştırıcıları olabilir. Hepsini göstermek için IncludeHidden parametresini ekleyin:

Get-NetAdapter -IncludeHidden

Sonuç, 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 Ethernet0

veya :

Get-NetAdapter -InterfaceIndex 8

Bağdaştırıcı adını değiştirebilirsiniz:

Rename-NetAdapter -Name Ethernet0 -NewName LAN

Bir ağ arabirimini devre dışı bırakmak için şu komutu kullanın:

Get-NetAdapter -Name Ethernet0| Disable-NetAdapter

NIC'yi adına göre etkinleştirin:

Enable-NetAdapter -Name Ethernet0

Ağ 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, VlanID

Kullanmakta 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-NetAdapterHardwareInfo

Ağ arabirimi için IPv6 protokolünü devre dışı bırakın:

Get-NetAdapterBinding -InterfaceAlias Ethernet0 | Set-NetAdapterBinding -Enabled:$false -ComponentID ms_tcpip6

Bir ağ arabirimi için NetBIOS protokolünü devre dışı bırakın:

Set-NetAdapterBinding -Name Ethernet0 -ComponentID ms_netbios -AllBindings -Enabled $True

PowerShell 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 Ethernet0

Ağ 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 -Detailed

Bu 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).IPv4Address

Yalnızca arayüzün IP adresinin değerini döndürün:

(Get-NetAdapter -Name ethernet0 | Get-NetIPAddress).IPv4Address

Dosyaları 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 Disabled

Bir 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 -AllBindings

Name                           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 @ipParams

Bir 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.90

Bağ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 Disabled

Statik 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.11

Bir dizi kullanarak DNS ad sunucusu IP'lerini de belirleyebilirsiniz:

$dnsParams = @{
InterfaceIndex = 8
ServerAddresses = ("8.8.8.8","8.8.4.4")
}
Set-DnsClientServerAddress @dnsParams

DNS ayarlarını değiştirdikten sonra, DNS çözümleyici önbelleğini temizleyebilirsiniz (şuna eşdeğerdir:

ipconfig /flushdns

):

Clear-DnsClientCache

Windows'ta DNS önbellek içeriğini görüntüle::

Get-DnsClientCache

Yö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 8

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

PowerShell: 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 Enabled

DNS sunucusu ayarlarını temizleyin:

Set-DnsClientServerAddress -InterfaceAlias Ethernet0 -ResetServerAddresses

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

Bilgisayarı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}
}
}

İlgili makaleler