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

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

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

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

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

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