Как изменить 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-адресе.