Как изменить IP-адрес удаленной виртуальной машины с помощью Powershell?

Я создаю процесс автоматической сборки в Powershell и мне нужно создать виртуальную машину со статическим IP-адресом. Виртуальная машина создается по сценарию и ей назначается IP-адрес DHCP. Я могу запросить хост Hyper-V, чтобы получить IP-адрес вновь созданной виртуальной машины с Get-NetAdapter так что я могу удаленно к нему с Invoke-Command -ComputerName <ip_address>, Пока все хорошо. Следующая строка в моем скрипте powershell затем меняет IP-адрес удаленной виртуальной машины на New-NetIPAddress но Invoke-Command Время ожидания командлета через 4 минуты.

У меня вопрос, есть ли лучший способ изменить IP удаленно? Могу ли я установить тайм-аут и обработать его как-нибудь изящно? На данный момент он сидит там в течение 4 минут, а затем выдает ошибку соединения.

РЕДАКТИРОВАТЬ: Если я изменю IpAddress в работе, как это было предложено Джеральдом, как я передам параметры в работу? Мой текущий код для изменения IP выглядит так:

Invoke-Command -ComputerName $TempIpAddress -Credential $cred -scriptblock {param ($IpAddress, $DefaultGateway) Get-NetIpAddress | Where-Object {$_.InterfaceAlias -match "Ethernet" -and $_.AddressFamily -eq "IPv4"} | New-NetIPAddress –IPAddress $IpAddress –PrefixLength 24 -DefaultGateway $DefaultGateway} -ArgumentList $NewIpAddress, $DefaultGateway

РЕДАКТИРОВАТЬ 2: Я попробовал это, работа создается, но ничего не делает. И когда я бегу Get-Job ничего не возвращается.

Invoke-Command -ComputerName $TempIpAddress -Credential $cred -scriptblock {Start-Job -ScriptBlock {param ($IpAddress, $DefaultGateway) Get-NetIpAddress | Where-Object {$_.InterfaceAlias -match "Ethernet" -and $_.AddressFamily -eq "IPv4"} | New-NetIPAddress –IPAddress $IpAddress –PrefixLength 24 -DefaultGateway $DefaultGateway} -ArgumentList $NewIpAddress, $DefaultGateway}

1 ответ

Решение

В настоящее время я не могу проверить это, но что-то вроде этого должно работать:

Invoke-Command -ComputerName <ip_address> -ScriptBlock { Start-Job -ScriptBlock { New-NetIPAddress ... } }

Это должно запустить командлет в фоновом режиме, что позволит вам элегантно отключиться. Затем вы должны выполнить следующие команды на новом IP-адресе.

Другие вопросы по тегам