ค้นหาเว็บไซต์

กำหนดการตั้งค่าเครือข่ายบน Windows ด้วย PowerShell: ที่อยู่ IP, DNS, เกตเวย์เริ่มต้น, เส้นทางแบบคงที่


ใน Windows คุณสามารถจัดการการตั้งค่าสำหรับอะแดปเตอร์เครือข่ายของคุณ ไม่เพียงแต่จาก GUI เท่านั้น แต่ยังรวมถึงจากพรอมต์คำสั่ง PowerShell ในบทความนี้ เราจะดู cmdlet ที่สำคัญที่สุดที่คุณสามารถใช้เพื่อค้นหาที่อยู่ IP ปัจจุบันของอะแดปเตอร์เครือข่าย กำหนดที่อยู่ IP แบบคงที่ กำหนด IP ของเซิร์ฟเวอร์ DNS หรือกำหนดค่าอินเทอร์เฟซเครือข่ายเพื่อรับ IP การกำหนดค่าจากเซิร์ฟเวอร์ DHCP คุณสามารถใช้ cmdlet เหล่านี้เพื่อกำหนดค่าเครือข่ายบน Windows 10/11 และ Windows Server (หรือรุ่น Server Core), เซิร์ฟเวอร์ Hyper-V เพื่อเปลี่ยนการตั้งค่า IP ของอะแดปเตอร์เครือข่ายบนคอมพิวเตอร์ระยะไกล และในสคริปต์การทำงานอัตโนมัติของ PowerShell

ก่อนหน้านี้ อ

netsh interface ipv4 

คำสั่งถูกใช้เพื่อจัดการการตั้งค่าเครือข่ายจาก CLI ใน PowerShell 3.0 และใหม่กว่า คุณสามารถใช้โมดูล PowerShell NetTCPIP ในตัวเพื่อจัดการการตั้งค่าเครือข่ายบน Windows

ในการรับรายการ cmdlets ในโมดูลนี้ ให้เรียกใช้คำสั่งต่อไปนี้:

get-command -module NetTCPIP

โมดูลนี้ยังรวมถึง Test-NetConnection cmdlet ซึ่งสามารถใช้เพื่อค้นหาพอร์ต TCP ที่เปิดอยู่บนคอมพิวเตอร์ระยะไกล

การจัดการการตั้งค่าอะแดปเตอร์เครือข่ายผ่าน PowerShell

แสดงรายการอินเทอร์เฟซเครือข่ายที่มีในคอมพิวเตอร์ Windows:

Get-NetAdapter

cmdlet ส่งคืนชื่ออินเทอร์เฟซ สถานะ (ขึ้น/ลง) ที่อยู่ MAC และความเร็วพอร์ต

ในตัวอย่างนี้ ฉันมีอะแดปเตอร์เครือข่ายหลายตัวในคอมพิวเตอร์ของฉัน (นอกเหนือจากการเชื่อมต่อทางกายภาพ Ethernet0 ฉันมีเครือข่าย Hyper-V และ VMWare Player อินเทอร์เฟซ)

หากต้องการแสดงเฉพาะอินเทอร์เฟซเครือข่ายทางกายภาพที่เปิดใช้งาน:

Get-NetAdapter -Physical | ? {$_.Status -eq "Up"}

คุณสามารถดูเฉพาะพารามิเตอร์อะแดปเตอร์เครือข่ายบางอย่าง เช่น ชื่อ ความเร็ว สถานะ หรือที่อยู่ MAC:

Get-NetAdapter |Select-Object name,LinkSpeed,InterfaceOperationalStatus,MacAddress

Windows อาจมีอะแดปเตอร์เครือข่ายซ่อนอยู่ หากต้องการแสดงทั้งหมด ให้เพิ่มพารามิเตอร์ IncludeHidden:

Get-NetAdapter -IncludeHidden

ผลลัพธ์จะเป็นรายการของอแด็ปเตอร์ WAN Miniport เสมือนทั้งหมดที่ใช้สำหรับการเชื่อมต่อประเภทต่างๆ รวมถึง VPN การรีบูตอแด็ปเตอร์เหล่านี้มักจะแก้ไขข้อผิดพลาดในการเชื่อมต่อ VPN ด้วยไคลเอนต์ Windows ในตัว มี PowerShell cmdlet แยกต่างหากสำหรับจัดการการเชื่อมต่อ VPN

คุณสามารถอ้างถึงอินเทอร์เฟซเครือข่ายตามชื่อหรือดัชนี (คอลัมน์ ดัชนี) ในตัวอย่างของเรา ในการเลือกอะแดปเตอร์ LAN จริง Intel 82574L Gigabit Network Connection ให้ใช้คำสั่ง:

Get-NetAdapter -Name Ethernet0

หรือ :

Get-NetAdapter -InterfaceIndex 8

คุณสามารถเปลี่ยนชื่ออแด็ปเตอร์:

Rename-NetAdapter -Name Ethernet0 -NewName LAN

หากต้องการปิดใช้งานอินเทอร์เฟซเครือข่าย ให้ใช้คำสั่งนี้:

Get-NetAdapter -Name Ethernet0| Disable-NetAdapter

เปิดใช้งาน NIC ตามชื่อ:

Enable-NetAdapter -Name Ethernet0

หากอะแดปเตอร์เครือข่ายมีหมายเลข VLAN ที่กำหนดค่าไว้ คุณสามารถดูได้:

Get-NetAdapter | ft Name, Status, Linkspeed, VlanID

นี่คือวิธีที่คุณสามารถค้นหาข้อมูลเกี่ยวกับไดรเวอร์การ์ดเชื่อมต่อเครือข่ายที่คุณกำลังใช้:

Get-NetAdapter | ft Name, DriverName, DriverVersion, DriverInformation, DriverFileName

แสดงรายการข้อมูลเกี่ยวกับอะแด็ปเตอร์เครือข่ายจริง (สล็อต PCI, บัส ฯลฯ):

Get-NetAdapterHardwareInfo

ปิดใช้งานโปรโตคอล IPv6 สำหรับอินเทอร์เฟซเครือข่าย:

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

ปิดใช้งานโปรโตคอล NetBIOS สำหรับอินเทอร์เฟซเครือข่าย:

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

วิธีรับการตั้งค่าที่อยู่ IP ด้วย PowerShell

หากต้องการรับการตั้งค่าอะแดปเตอร์เครือข่ายปัจจุบันใน Windows (ที่อยู่ IP, DNS, เกตเวย์เริ่มต้น):

Get-NetIPConfiguration -InterfaceAlias Ethernet0

หากต้องการแสดงข้อมูลรายละเอียดเพิ่มเติมเกี่ยวกับการกำหนดค่าอินเทอร์เฟซเครือข่าย TCP/IP ให้ใช้คำสั่ง

Get-NetIPConfiguration -InterfaceAlias Ethernet0 -Detailed

ในกรณีนี้ ตำแหน่งเครือข่ายที่กำหนด (โปรไฟล์) (NetProfile.NetworkCategory) ของอินเทอร์เฟซ การตั้งค่า MTU (NetIPv4Interface.NlMTU) เปิดใช้งานการรับที่อยู่ IP จาก DHCP หรือไม่ (NetIPv4Interface.DHCP) และข้อมูลที่เป็นประโยชน์อื่นๆ อีกจำนวนหนึ่ง จะแสดง

ในการรับที่อยู่อินเทอร์เฟซ IPv4 เท่านั้น:

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

คืนค่าที่อยู่ IP ของอินเทอร์เฟซเท่านั้น:

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

เมื่อคัดลอกไฟล์ไปยัง VM ผู้ดูแลระบบจำนวนมากสังเกตเห็นประสิทธิภาพเครือข่ายที่ต่ำบน Windows Server 2019 โดยเปิดใช้งานบทบาท Hyper-V ในกรณีนี้ การคืนค่าการตั้งค่าสแต็ก TCP กลับไปเป็นการตั้งค่าที่ใช้ใน Windows Server 2016 จะช่วยแก้ไขปัญหาได้:

Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -CongestionProvider DCTCP
Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -CwndRestart True
Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -ForceWS Disabled

แสดงรายการโปรโตคอลเครือข่ายที่สามารถเปิดใช้งานหรือปิดใช้งานสำหรับอะแดปเตอร์เครือข่าย:

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

หากต้องการดูเซสชัน TCP/IP ที่ใช้งานอยู่บนคอมพิวเตอร์ ให้ใช้ Get-NetTCPConnection cmdlet

ตั้งค่าที่อยู่ IP แบบคงที่บน Windows โดยใช้ PowerShell

มาลองตั้งค่าที่อยู่ IP แบบคงที่สำหรับ NIC หากต้องการเปลี่ยนที่อยู่ IP, เน็ตเวิร์กมาสก์ และเกตเวย์เริ่มต้นสำหรับอินเทอร์เฟซเครือข่าย Ethernet0 ให้ใช้คำสั่ง:

Get-NetAdapter -Name Ethernet0| New-NetIPAddress -IPAddress 192.168.2.50 -DefaultGateway 192.168.2.1 -PrefixLength 24 

คุณสามารถตั้งค่าที่อยู่ IP โดยใช้โครงสร้างอาร์เรย์ (มองเห็นได้มากขึ้น):

$ipParams = @{
InterfaceIndex = 8
IPAddress = "192.168.2.50"
PrefixLength = 24
AddressFamily = "IPv4"
}
New-NetIPAddress @ipParams

คุณสามารถใช้ New-NetIPAddress เพื่อเพิ่มที่อยู่ IP ที่สอง (นามแฝง) ไปยังการ์ดเชื่อมต่อเครือข่าย

หากมีการกำหนดค่าที่อยู่ IP แบบคงที่แล้วและจำเป็นต้องเปลี่ยน ให้ใช้ cmdlet Set-NetIPAddress:

Set-NetIPAddress -InterfaceAlias Ethernet0 -IPAddress 192.168.2.90

หากต้องการปิดใช้งานการรับที่อยู่ IP จาก DHCP สำหรับอแด็ปเตอร์ของคุณ ให้รันคำสั่ง:

Set-NetIPInterface -InterfaceAlias Ethernet0 -Dhcp Disabled

ลบที่อยู่ IP แบบคงที่:

Remove-NetIPAddress -IPAddress "xxx.xxx.xxx.xxx"

ตั้งค่าที่อยู่ IP ของเซิร์ฟเวอร์ DNS ใน Windows ด้วย PowerShell

หากต้องการตั้งค่าที่อยู่ IP ของเซิร์ฟเวอร์ DNS ที่ต้องการและสำรองใน Windows ให้ใช้ cmdlet Set-DNSClientServerAddress ตัวอย่างเช่น:

Set-DNSClientServerAddress -InterfaceIndex 8 -ServerAddresses 192.168.2.11,10.1.2.11

คุณยังสามารถระบุ IP ของเนมเซิร์ฟเวอร์ DNS โดยใช้อาร์เรย์:

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

หลังจากเปลี่ยนการตั้งค่า DNS แล้ว คุณสามารถล้างแคชตัวแก้ไข DNS (เทียบเท่ากับ

ipconfig /flushdns

):

Clear-DnsClientCache

แสดงเนื้อหาแคช DNS ใน Windows::

Get-DnsClientCache

การจัดการตารางเส้นทางด้วย PowerShell

cmdlet Get-NetRoute ใช้เพื่อแสดงตารางเส้นทาง

รับเส้นทางเกตเวย์เริ่มต้นสำหรับอินเทอร์เฟซเครือข่ายจริงใน Windows:

Get-NetAdapter -Physical | ? {$_.Status -eq "Up"}| Get-netroute| where DestinationPrefix -eq "0.0.0.0/0"

หากต้องการเพิ่มเส้นทางใหม่ ให้ใช้ cmdlet New-NetRoute:

New-NetRoute -DestinationPrefix "0.0.0.0/0" -NextHop "192.168.2.2" -InterfaceIndex 8

คำสั่งนี้จะเพิ่มเส้นทางถาวรไปยังตารางเส้นทาง (คล้ายกับ

route -p add

). หากคุณต้องการเพิ่มเส้นทางชั่วคราว ให้เพิ่ม

-PolicyStore "ActiveStore"

ตัวเลือก. เส้นทางนี้จะถูกลบหลังจากรีสตาร์ท Windows

ลบเส้นทางออกจากตารางเส้นทาง:

Remove-NetRoute -NextHop 192.168.0.1 -Confirm:$False

PowerShell: เปลี่ยนอแด็ปเตอร์จากที่อยู่ IP แบบคงที่เป็น DHCP

ในการกำหนดค่าคอมพิวเตอร์ของคุณเพื่อรับที่อยู่ IP แบบไดนามิกสำหรับอะแดปเตอร์เครือข่ายจากเซิร์ฟเวอร์ DHCP ให้รันคำสั่งนี้:

Set-NetIPInterface -InterfaceAlias Ethernet0 -Dhcp Enabled

ล้างการตั้งค่าเซิร์ฟเวอร์ DNS:

Set-DnsClientServerAddress -InterfaceAlias Ethernet0 -ResetServerAddresses

และรีสตาร์ทอะแดปเตอร์เครือข่ายเพื่อรับที่อยู่ IP จากเซิร์ฟเวอร์ DHCP โดยอัตโนมัติ:

Restart-NetAdapter -InterfaceAlias Ethernet0

หากคุณเคยกำหนดค่าเกตเวย์เริ่มต้นไว้ ให้ลบออก:

Set-NetIPInterface -InterfaceAlias Ethernet0| Remove-NetRoute -Confirm:$false

หากคุณต้องการรีเซ็ตการตั้งค่า IPv4 ทั้งหมดสำหรับอินเทอร์เฟซเครือข่ายของคอมพิวเตอร์ และสลับการตั้งค่าเหล่านี้เพื่อรับที่อยู่ IP แบบไดนามิกจาก DHCP ให้ใช้สคริปต์ต่อไปนี้:

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

เปลี่ยนที่อยู่ DNS และ IP จากระยะไกลบนคอมพิวเตอร์หลายเครื่องด้วย PowerShell

คุณสามารถใช้ PowerShell เพื่อเปลี่ยนที่อยู่ IP หรือการตั้งค่าเซิร์ฟเวอร์ DNS จากระยะไกลบนคอมพิวเตอร์ระยะไกลหลายเครื่อง

สมมติว่า งานของคุณคือเปลี่ยนการตั้งค่า DNS บนโฮสต์ Windows Server ทั้งหมดใน AD Organizational Unit (OU) สคริปต์ต่อไปนี้ใช้ Get-ADComputer cmdlet เพื่อรับรายการคอมพิวเตอร์จาก Active Directory จากนั้นเชื่อมต่อกับคอมพิวเตอร์ระยะไกลผ่าน WinRM (ใช้ Invoke-Command cmdlet):

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

บทความที่เกี่ยวข้อง