如何使用 Powershell 更改远程 VM 的 IP 地址?

如何使用 Powershell 更改远程 VM 的 IP 地址?

我正在 Powershell 中创建一个自动构建过程,需要构建一个具有静态 IP 地址的 VM。VM 由脚本构建并分配一个 DHCP IP 地址。我可以查询 Hyper-V 主机以获取新建 VM 的 IP 地址,以便Get-NetAdapter我可以使用 远程访问它Invoke-Command -ComputerName <ip_address>。到目前为止一切顺利。我的 powershell 脚本中的下一行随后使用 更改远程 VM 的 IP 地址,New-NetIPAddressInvoke-Commandcmdlet 在 4 分钟后超时。

我的问题是,有没有更好的方法可以远程更改 IP?我可以设置超时并以某种方式妥善处理吗?目前,它在那里停留了 4 分钟,然后出现连接错误。

编辑:如果我按照 Gerald 的建议更改作业中的 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 ... } }

这应该会在后台启动 cmdlet,让您可以正常断开连接。然后您应该在新的 IP 地址上运行下一个命令。

相关内容