Назад | Перейти на главную страницу

Powershell: настройка статического IP-адреса на отключенной сетевой карте

Я пытаюсь найти способ настроить постоянный статический IP-адрес на устройствах Windows 10 IOT с отключенным Nic. У меня есть сценарий, который нужно запустить на устройствах, прежде чем они будут установлены, и часть его - настройка сетевых адаптеров. Когда я использую следующее: 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 Я попытался явно отключить DHCP с помощью Set-NetIPInterface -InterfaceIndex 10 -Dhcp Disabled перед использованием команды New-NetIpAddress, но я получаю ту же ошибку.

Какие-либо предложения?

Вам необходимо удалить существующий IP-адрес DHCP, уже назначенный адаптеру. Вы также должны установить DNS-сервер для интерфейса. Я привел пример ниже, но заменил xxx.xxx.xxx.xxx на IP-адрес вашего DNS-сервера.

Вам нужно будет отключить DHCP в реестре для этого интерфейса в PersistentStore, прежде чем вы сможете установить 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/

У меня были проблемы с 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