קביעת תצורה של הגדרות רשת ב- Windows באמצעות PowerShell: כתובת IP, DNS, שער ברירת מחדל, נתיבים סטטיים


ב- Windows, באפשרותך לנהל את ההגדרות עבור מתאמי הרשת שלך לא רק מממשק המשתמש הגרפי אלא גם משורת הפקודה PowerShell. במאמר זה, נבחן את רכיבי ה- cmdlet החשובים ביותר שבהם באפשרותך להשתמש כדי לגלות את כתובת ה- IP הנוכחית של מתאם רשת, להקצות כתובת IP סטטית, להקצות כתובות IP של שרת DNS או להגדיר ממשק רשת לקבלת תצורת IP משרת DHCP. באפשרותך להשתמש ברכיבי cmdlet אלה כדי לקבוע תצורה של עבודה ברשת הן ב- Windows 10/11 והן ב- Windows Server (או מהדורות Server Core), Hyper-V Server, כדי לשנות את הגדרות ה- IP של מתאמי רשת במחשבים מרוחקים ובקבצי script של אוטומציה של PowerShell.

בעבר,

netsh interface ipv4 

הפקודה שימשה לניהול הגדרות רשת מה- CLI. ב- PowerShell 3.0 ואילך, באפשרותך להשתמש במודול NetTCPIP PowerShell המוכלל כדי לנהל הגדרות רשת ב- Windows.

כדי לקבל את רשימת רכיבי ה- cmdlet במודול זה, הפעל את הפקודה הבאה:

get-command -module NetTCPIP

מודול זה כולל גם את cmdlet Test-NetConnection שניתן להשתמש בו כדי למצוא יציאות 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 המובנה. קיימים רכיבי cmdlet נפרדים של PowerShell לניהול חיבורי 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

בעת העתקת קבצים למחשבים וירטואליים, מנהלי מערכת רבים הבחינו בביצועי רשת ירודים ב- 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 פעילות במחשב, השתמש ב- cmdlet Get-NetTCPConnection.

הגדרת כתובת 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 (OU). קובץ ה- script הבא משתמש ב- cmdlet Get-ADComputer כדי לקבל את רשימת המחשבים מ- Active Directory ולאחר מכן מתחבר למחשבים המרוחקים באמצעות WinRM (נעשה שימוש ב- cmdlet Invoke-Command):

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