使用 netsh 设置静态 IP 配置后,Get-NetIPInterface 属性“Dhcp”为“已启用”

使用 netsh 设置静态 IP 配置后,Get-NetIPInterface 属性“Dhcp”为“已启用”

问题

使用 netsh 设置静态 IP 配置:

netsh interface ipv4 set address name="Ethernet1" static 192.168.0.20 255.255.255.0 192.168.0.1
netsh interface ipv4 set dns name="Ethernet1" static 1.1.1.1 validate=no
netsh interface ipv4 add dns name="Ethernet1" addr=8.8.8.8 index=2 validate=no

Dhcp使用以下方法获取属性的值Get-NetIPInterface

$Adapter = Get-NetAdapter 'Ethernet1'
($Adapter | Get-NetIPInterface -AddressFamily IPv4).Dhcp

我期望它回来,Disabled但它却回来了Enabled

它为什么会回来Enabled


Windows UI 中的适配器属性

执行netsh上述命令后,Windows 将显示适配器的以下设置:

在此处输入图片描述

他们看上去像是Dhcp残疾人。


获取房产Get-NetIPInterface回报的方法EnabledDhcp

当我按照以下步骤操作时:

  1. 在 Windows 中打开适配器属性,如上图所示
  2. 按下OK(不做任何改变)
  3. 关闭所有对话框
  4. Get-NetIPInterface再次按上述方法运行

然后对于该属性,Dhcp它会Disabled按预期返回。

我不明白为什么,因为我没有改变任何东西。

答案1

当使用powershell获取信息时,为什么不使用它来设置信息呢?

New-NetIPAddress -IPAddress 192.168.0.20 -InterfaceAlias 'Ethernet1' -DefaultGateway 192.168.0.1 -AddressFamily IPv4 -PrefixLength 24
Set-DnsClientServerAddress -InterfaceAlias 'Ethernet1' -serveraddresses 1.1.1.1,8.8.8.8

(Get-NetIPInterface -InterfaceAlias Wi-Fi -AddressFamily IPv4).Dhcp
Disabled

为什么不netsh设置相同的 dhcp 设置?我不确定,但这可能与netsh对旧Win32_NetworkAdapterConfiguration类进行更改有关,而 powershell 的NetTCPIP模块会检查较新的MSFT_NetIPInterface。可能是 powershell 检查了一些缓存版本并为您提供了旧值。尝试比较这两个命令的输出?

Get-WmiObject win32_NetworkAdapterConfiguration | select DHCPEnabled,Description
Get-CimInstance -Namespace Root/StandardCimv2 -ClassName MSFT_NetIPInterface | Select Dhcp,InterfaceAlias

相关内容