使用Windows PowerShell進行IP配置的入門

A common SysAdmin task involves managing a PowerShell IP configuration. Typically, one performs this task using the GUI, which is OK. But PowerShell can do the same job and more, which you can put into scripting.

在本教程中,您將學習如何使用PowerShell中的一些網絡管理cmdlet來幫助管理Windows主機的IP地址、網關和DNS設置。

繼續閱讀,提升您的PowerShell IP配置命令的網絡故障排除技能!

先決條件

本教程包括實踐演示。您需要在現代Windows OS上擁有對PowerShell的管理訪問權限,以便跟隨操作。本教程使用Windows Server 2022,但這些命令適用於Windows 10版本及更高版本。

獲取網絡適配器屬性(Get-NetAdapter

在疑難排解或收集主機的IP地址時,您可以使用傳統工具,如pingipconfigsconfig。但是,使用PowerShell cmdlet,您可以為自動化編寫腳本。

打開PowerShell並運行下面的Get-NetAdapter cmdlet以獲取網絡適配器及其屬性的列表,例如您主機的InterfaceAliasInterfaceIndex

Get-NetAdapter
Getting network adapters’ properties

請注意,您的適配器尚未具有IP地址對象。您需要知道將要使用的適配器。在本教程中,您將使用Ethernet的適配器別名。

檢索地址 PowerShell IP配置(Get-NetIPAddress

您之前使用一個命令列出了所有的網路介面。但是您也可以通過 Get-NetIPAddress 命令來列出屬性值和您主機的當前 IP 地址。

運行下面的命令(不帶參數)來顯示每個適配器的地址和 PowerShell IP 配置。

Get-NetIPAddress
Getting all IP address configurations

現在,運行以下命令來縮小輸出(Select-Object)到以太網的 InterfaceAliasIPAddress

Get-NetIPAddress -InterfaceAlias Ethernet | Select-Object -Property InterfaceAlias,IPAddress
Finding the IP address assigned to an interface (Ethernet)

獲取 IP 路由信息(Get-NetRoute

IP 地址使主機能夠與同一網路上的其他主機通信。但是當主機需要與該網路之外的主機通信時會發生什麼情況?

A gateway address is necessary, and the Get-NetRoute cmdlet is what you need. This cmdlet provides information that previous cmdlets you have learned about do not.

運行下面的 Get-NetRoute 命令來檢查 Ethernet 介面的當前網關(NextHop)。

Get-NetRoute -InterfaceAlias Ethernet | Where-Object -Property RouteMetric -EQ 0 | Select-Object -Property NextHop

通常,DHCP 服務器提供網關地址。您稍後需要在本文中捕獲此地址。

Finding the gateway address assigned to an interface

獲取 DNS 伺服器 IP 地址(Get-DnsClientServerAddress

DNS對於內部和外部網路的名稱解析都是必需的。如果沒有DNS,您將不得不記住網路上每個主機的網址。

但很可能您的主機已經通過DHCP配置了DNS。您可以使用Get-DnsClientServerAddress cmdlet來驗證當前的配置。

Get-DnsClientServerAddress

通過將輸出重定向到文本文件或記下來記錄這些IP地址。您稍後需要重新指定這些DNS伺服器地址,本教程中會進一步介紹。

Verifying the current DNS configuration

獲取IP網路配置(Get-NetIPConfiguration)

當您需要以一次性獲取前三個cmdlets中學到的信息時,Get-NetIPConfiguration cmdlet就能滿足需求。這個cmdlet的一個顯著特點是它提供更專注的信息。

運行下面的Get-NetIPConfiguration cmdlet,顯示由您之前運行的cmdlets收集的IP網路配置。

Get-NetIPConfiguration
Getting IP network configurations

Get-NetIPConfiguration cmdlet 僅在您只有一個網路介面時才會更快。但如果您有多個網路介面,您可能需要過濾屬性以防止控制台滾動。

手動配置 IP、閘道和 DNS 地址

通過迄今為止學到的 cmdlet,是時候把你的新知識付諸實踐了。對於本教程,您將為 Windows Server 2022 主機分配靜態 IP 地址、閘道和 DNS 伺服器。

從這一點開始的命令僅更改指定網絡適配器的 IP 地址、閘道和 DNS 設置。您必須為每個要更改的適配器重複這些步驟。

1. 以管理員身份開啟 PowerShell,運行以下命令以列出伺服器上的網絡適配器。

Get-NetAdapter

查找已安裝的網絡適配器命令

識別您要更改的網絡適配器。您可以使用適配器的名稱或列表中顯示的索引號(例如,以太網)。

Current network adapter properties of all installed adapters

2. 接下來,執行以下Net-NetIPAddress命令來更改您網路適配器的IPv4地址。 -PrefixLength 的值為 24,表示該地址的前 24 個位元用於地址的網路部分。請務必相應地更換以下內容:

  • AdapterName – 您目標網路適配器的名稱或索引號。
  • ServerAddress – 要添加到網路適配器的IPv4地址。
  • GatewayAddress – 網關地址應該與IPv4地址位於同一子網中。
New-NetIPAddress -InterfaceAlias "[AdapterName]" -IPAddress [ServerAddress] -PrefixLength 24 -DefaultGateway [GatewayAddress]
Setting a new IP address and gateway

與New-NetIPAddress cmdlet相關的是 Set-NetIPAddress,它更改現有的IP配置,而 Remove-NetIPAddress則清除配置。

3. 現在,執行以下Set-DnsClientServerAddress命令,它不會產生輸出,但會更改 DNS 伺服器。請確保您使用您的網路適配器的名稱(-InterfaceAlias)或索引號碼(-InterfaceIndex)替換AdapterName。此命令將您的網路適配器的 DNS 伺服器設置為 Google 的公共 DNS 伺服器8.8.8.88.8.4.4。但您可以指定任何有效的 DNS 伺服器 IP 位址。

Set-DnsClientServerAddress -InterfaceAlias "[AdapterName]" -ServerAddresses 8.8.8.8, 8.8.4.4

請注意,使用 Set-DnsClientServerAddress cmdlet,您可以指定一個或多個內部或面向公眾的 DNS IP 位址。

4. 最後,執行以下Restart-NetAdapter命令,它不會在控制台上列印輸出,但會重新啟動您的網路適配器並應用更改。恭喜!您剛剛手動配置了您的網路介面,使用自定義配置。

Restart-NetAdapter -Name Ethernet

如果您的主机只有一个适配器,就像本教程中一样,根据您的连接方式,您可能会暂时失去连接。完成这最后一步是开始使用新的IP地址的关键。

结论

了解您的网络配置对于保持健康的网络至关重要。好消息是,您已经了解到了PowerShell IP配置命令中四个基本的网络配置命令。

凭借这些新的知识,您可以轻松地使用PowerShell IP配置功能创建脚本,作为更广泛的服务器配置过程的一部分。

接下来该做什么呢?为什么不尝试调整更高级的选项,如MTU、添加更多路由或将适配器重置为使用DHCP而不是静态地址?

Source:
https://adamtheautomator.com/powershell-ip-configuration/