问题
使用 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
回报的方法Enabled
Dhcp
当我按照以下步骤操作时:
- 在 Windows 中打开适配器属性,如上图所示
- 按下
OK
(不做任何改变) - 关闭所有对话框
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