ในบทความนี้ เราจะแสดงวิธีกำหนดค่าพารามิเตอร์อะแดปเตอร์เครือข่ายใน Windows ผ่าน PowerShell เราจะเรียนรู้วิธีรับและตั้งค่าที่อยู่ IP แบบคงที่และ DNS (เนมเซิร์ฟเวอร์) กำหนดค่าอินเทอร์เฟซเครือข่ายของคุณเพื่อรับการกำหนดค่า IP จากเซิร์ฟเวอร์ DHCP คุณสามารถใช้ cmdlet เหล่านี้เพื่อกำหนดค่าเครือข่ายใน Windows Server เวอร์ชัน Core/Nano, ใน Hyper-V Server เพื่อเปลี่ยนการตั้งค่า IP บนคอมพิวเตอร์/เซิร์ฟเวอร์ระยะไกลและในสคริปต์ PS ของคุณ
ก่อนหน้านี้ อินเทอร์เฟซ netsh ipv4
คำสั่งที่ใช้ในการกำหนดการตั้งค่าเครือข่าย Windows จาก CLI ใน PowerShell 3.0 และใหม่กว่า คุณสามารถใช้ PowerShell NetTCPIP ในตัว โมดูลเพื่อจัดการการตั้งค่าเครือข่าย Windows
หากต้องการรับรายการ cmdlets ในโมดูลนี้ ให้เรียกใช้คำสั่งต่อไปนี้:
get-command -module NetTCPIP
โมดูลนี้ยังรวมถึง Test-NetConnection cmdlet ที่คุณสามารถใช้เพื่อทดสอบความพร้อมใช้งานของพอร์ต TCP บนคอมพิวเตอร์ระยะไกล
การจัดการอะแดปเตอร์เครือข่ายด้วย PowerShell
แสดงรายการอินเทอร์เฟซเครือข่ายที่พร้อมใช้งานบนคอมพิวเตอร์:
Get-NetAdapter
cmdlet ส่งคืนชื่ออินเทอร์เฟซ สถานะ (ขึ้น/ลง) ที่อยู่ MAC และความเร็วพอร์ต
ในตัวอย่างนี้ ฉันมีอะแดปเตอร์เครือข่ายหลายตัวในคอมพิวเตอร์ของฉัน (นอกเหนือจากการเชื่อมต่อทางกายภาพ Ethernet0 ฉันมีอินเทอร์เฟซเครือข่าย Hyper-V และ VMWare Player)
คุณอ้างอิงอินเทอร์เฟซเครือข่ายได้ตามชื่อหรือดัชนี (ดัชนี คอลัมน์). ในตัวอย่างของเรา ในการเลือกอแดปเตอร์ LAN จริง Intel 82574L ให้ใช้คำสั่ง:
รับ-NetAdapter -ชื่อ "Ethernet0"
หรือ:
Get-NetAdapter -InterfaceIndex 8
คุณสามารถเปลี่ยนชื่ออแด็ปเตอร์:
เปลี่ยนชื่อ-NetAdapter -ชื่อ Ethernet0 -NewName LAN
หากต้องการปิดใช้งานอินเทอร์เฟซเครือข่าย ให้ใช้คำสั่งนี้:
รับ-NetAdapter -InterfaceIndex 13| ปิดการใช้งาน-NetAdapter
เมื่อคุณเปิดใช้งานอินเทอร์เฟซ คุณจะไม่สามารถใช้ดัชนีได้เนื่องจากยังไม่ได้กำหนด คุณสามารถระบุชื่ออแด็ปเตอร์หรือคำอธิบาย:
Enable-NetAdapter -InterfaceDescription “Hyper-V Virtual Ethernet Adapter"
หากมีการระบุ VLAN สำหรับอะแดปเตอร์ คุณสามารถแสดงได้ดังนี้:
รับ-NetAdapter | ft ชื่อ, สถานะ, ความเร็วของลิงค์, VlanID
วิธีรับข้อมูลเกี่ยวกับไดรเวอร์อะแดปเตอร์เครือข่ายที่ใช้มีดังนี้
รับ-NetAdapter | ft Name, DriverName, DriverVersion, DriverInformation, DriverFileName
ข้อมูลเกี่ยวกับฟิสิคัลเน็ตเวิร์กอะแด็ปเตอร์ (สล็อต PCI, บัส ฯลฯ):
Get-NetAdapterHardwareInfo
วิธีการดูการตั้งค่าอะแดปเตอร์เครือข่าย TCP/IP ด้วย PowerShell
ในการรับการตั้งค่าอะแดปเตอร์เครือข่ายปัจจุบัน (ที่อยู่ IP, DNS, เกตเวย์เริ่มต้น):
รับ-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
การใช้ PowerShell เพื่อตั้งค่าที่อยู่ IP แบบคงที่
ลองตั้งค่าที่อยู่ IP แบบคงที่สำหรับ NIC ในการเปลี่ยนที่อยู่ IP ซับเน็ตมาสก์และเกตเวย์เริ่มต้นสำหรับอินเทอร์เฟซเครือข่ายให้ใช้:
ใหม่-NetIPAddress –IPAddress 192.168.2.50 -DefaultGateway 192.168.2.1 -PrefixLength 24 -InterfaceIndex 8
คุณสามารถตั้งค่าที่อยู่ IP โดยใช้โครงสร้างอาร์เรย์ (มองเห็นได้ชัดเจนยิ่งขึ้น):
$ipParams =@{
InterfaceIndex =8
IPAddress ="192.168.2.50"
PrefixLength =24
AddressFamily ="IPv4"
}
ใหม่-NetIPAddress @ipParams
หากที่อยู่ IP แบบคงที่ได้รับการกำหนดค่าแล้ว และคุณต้องการเปลี่ยน Set-NetIPAddress ใช้ cmdlet:
Set-NetIPAddress -InterfaceIndex 8 -IPAddress 192.168.2.90
หากต้องการปิดใช้งานการรับที่อยู่ IP จาก DHCP สำหรับอแด็ปเตอร์ของคุณ ให้เรียกใช้คำสั่ง:
Set-NetIPInterface -InterfaceAlias Ethernet0 -Dhcp ปิดการใช้งาน
ในการดูตารางเส้นทาง จะใช้ Get-NetRoute cmdlet หากต้องการเพิ่มเส้นทางใหม่ ให้ใช้ New-NetRoute cmdlet:
ใหม่-NetRoute -DestinationPrefix "0.0.0.0/0" -NextHop "192.168.2.2" -InterfaceIndex 8
ในการปิดใช้งานโปรโตคอล IPv6 สำหรับอะแดปเตอร์เครือข่าย:
รับ-NetAdapterBinding -InterfaceAlias Ethernet0 | ชุด NetAdapterBinding -Enabled:$false -ComponentID ms_tcpip6
Set-DnsClientServerAddress:ตั้งค่าที่อยู่เซิร์ฟเวอร์ DNS หลักและรอง
ในการตั้งค่าที่อยู่ IP ของเซิร์ฟเวอร์ DNS หลักและรองใน Windows ให้ใช้ Set-DNSClientServerAddress cmdlet ตัวอย่างเช่น:
ชุด-DNSClientServerAddress –InterfaceIndex 8 –ServerAddresses 192.168.2.11,10.1.2.11
คุณยังสามารถตั้งค่าเนมเซิร์ฟเวอร์โดยใช้อาร์เรย์:
$dnsParams =@{
InterfaceIndex =8
ServerAddresses =("8.8.8.8","8.8.4.4")
}
Set-DnsClientServerAddress @dnsParams รหัส>
หลังจากเปลี่ยนการตั้งค่า DNS แล้ว คุณสามารถล้างแคชตัวแก้ไขได้:
Clear-DnsClientCache
จะเปลี่ยนที่อยู่ IP แบบคงที่เป็น DHCP โดยใช้ PowerShell ได้อย่างไร
เพื่อให้คอมพิวเตอร์ได้รับที่อยู่ IP แบบไดนามิกจากเซิร์ฟเวอร์ DHCP สำหรับอะแดปเตอร์เครือข่าย ให้เรียกใช้คำสั่งนี้:
Set-NetIPInterface -InterfaceAlias Ethernet0 - เปิดใช้งาน Dhcp แล้ว
ล้างการตั้งค่าเซิร์ฟเวอร์ DNS:
Set-DnsClientServerAddress –InterfaceIndex 8 -ResetServerAddresses
และรีสตาร์ทอแด็ปเตอร์ของคุณเพื่อรับที่อยู่ IP โดยอัตโนมัติจากเซิร์ฟเวอร์ DHCP:
รีสตาร์ท-NetAdapter -InterfaceAlias Ethernet0
หากคุณเคยกำหนดค่าเกตเวย์เริ่มต้นไว้ก่อนหน้านี้ ให้ลบออก:
Set-NetIPInterface -InterfaceAlias Ethernet0 | Remove-NetRoute -ยืนยัน:$false
จะเปลี่ยนการตั้งค่าที่อยู่ IP และ DNS จากระยะไกลด้วย PowerShell ได้อย่างไร
คุณสามารถใช้ PowerShell เพื่อเปลี่ยนการตั้งค่าที่อยู่ IP หรือเซิร์ฟเวอร์ DNS จากระยะไกลบนคอมพิวเตอร์ระยะไกลหลายเครื่องได้ สมมติว่า งานของคุณคือเปลี่ยนการตั้งค่า DNS สำหรับเซิร์ฟเวอร์ทั้งหมดในคอนเทนเนอร์ AD เฉพาะ (หน่วยขององค์กร) ในการรับรายการคอมพิวเตอร์ในสคริปต์ด้านล่าง จะใช้ Get-ADComputer cmdlet และ WinRM ใช้เพื่อเชื่อมต่อกับคอมพิวเตอร์จากระยะไกล (Invoke-Command cmdlet):
$Servers =Get-ADComputer -SearchBase ‘OU=Servers,OU=Berlin,OU=DE,DC=woshub,DC=cpm’ -Filter '(OperatingSystem -like "Windows Server*")' | ชื่อออบเจ็กต์การเรียงลำดับ
สำหรับแต่ละรายการ ($เซิร์ฟเวอร์ในเซิร์ฟเวอร์ $) {
เขียนโฮสต์ "เซิร์ฟเวอร์ $($ Server.Name)"
เรียกใช้คำสั่ง - ชื่อคอมพิวเตอร์ $ Server.Name -ScriptBlock {
$NewDnsServerSearchOrder ="192.168.2.11","8.8.8.8"
$Adapters =รับ-WmiObject Win32_NetworkAdapterConfiguration | Where-Object {$_.DHCPEnabled -ne 'True' -and $_.DNSServerSearchOrder -ne $null}
Write-Host "การตั้งค่า DNS เก่า:"
$Adapters | ForEach-Object {$_.DNSServerSearchOrder}
$Adapters | สำหรับแต่ละวัตถุ {$_.SetDNSServerSearchOrder($NewDnsServerSearchOrder)} | Out-Null
$Adapters =รับ-WmiObject Win32_NetworkAdapterConfiguration | Where-Object {$_.DHCPEnabled -ne 'True' -and $_.DNSServerSearchOrder -ne $null}
Write-Host "การตั้งค่า DNS ใหม่:"
$Adapters | ForEach-Object {$_.DNSServerSearchOrder}
}
}