我正在尝试找到一种方法,在拔下网卡的情况下在 Windows 10 IOT 设备上配置永久静态 IP。我有一个脚本需要在设备安装到位之前在设备上运行,其中一部分是配置网卡。当我使用以下内容时:
New-NetIpAddress -InterfaceIndex 10 -IpAddress 192.168.9.10 -PrefixLength 24 -DefaultGateway 192.168.9.1 -AddressFamily IPv4
我收到一个错误,
New-NetIpAddress : Inconsistent parameters PolicyStore PersistentStore and Dhcp Enabled
我尝试在使用 New-NetIpAddress 命令之前明确关闭 DHCP Set-NetIPInterface -InterfaceIndex 10 -Dhcp Disabled
,但还是收到同样的错误。
有什么建议么?
答案1
您需要删除已分配给适配器的现有 DHCP IP 地址。您还应该为接口设置 DNS 服务器。我在下面提供了一个示例,但将 xxx.xxx.xxx.xxx 替换为您的 DNS 服务器 IP 地址。
然后您需要在 PersistentStore 中的此接口的注册表中禁用 DHCP,然后才能设置 IP 地址。
Set-ItemProperty -Path “HKLM:\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Interfaces\$((Get-NetAdapter -InterfaceIndex 10).InterfaceGuid)” -Name EnableDHCP -Value 0
Remove-NetIpAddress -InterfaceIndex 10 -AddressFamily IPv4
Remove-NetRoute -InterfaceIndex 10 -AddressFamily IPv4 -Confirm:$false
New-NetIpAddress -InterfaceIndex 10 -IpAddress 192.168.9.10 -PrefixLength 24 -DefaultGateway 192.168.9.1 -AddressFamily IPv4
Set-DnsClientServerAddress -InterfaceIndex 10 -ServerAddresses "xxx.xxx.xxx.xxx"
此网站有一个很好的示例和对该过程的解释:https://www.pdq.com/blog/using-powershell-to-set-static-and-dhcp-ip-addresses-part-1/
此网站讨论了您遇到的相同问题及其解决方案:http://www.darrylvanderpeijl.com/inconsistent-parameters-policystore-persistentstore-and-dhcp-enabled/
答案2
我在 Windows 10 1909 上遇到所有代码问题,似乎不一致。以下代码对我有用,请选择 netsh 或 powershell 独占代码:
$IP = $builddata.templateIP
$SubnetMaskBits = $builddata.Subnetmaskbits
$SubnetMask = $builddata.Subnetmask
$Gateway = $builddata.gateway
$Dns = $builddata.DNS1,$builddata.DNS2
$IPType = "IPv4"
$adapter = Get-NetAdapter | Where-Object {$_.InterfaceDescription -like "vmx*"} #looking for vmxnet3
# you can use either at this point
# via netsh
netsh interface ipv4 set interface $adapter.InterfaceIndex dadtransmits=0 store=persistent
netsh interface ip set address name="$($adapter.name)" static $IP $SubnetMask $Gateway 1
# via PowerShell
$adapter | Get-NetIPInterface | ? {$_.addressfamily -eq $IPType} | % {Get-NetIPAddress | Remove-NetIPAddress -Confirm:$false}
$adapter | Get-NetIPInterface | New-NetIPAddress `
-AddressFamily $IPType `
-IPAddress $IP `
-PrefixLength $SubnetMaskBits `
-DefaultGateway $Gateway -Confirm:$false