使用Powershell更改远程服务器的IP会导致断开连接错误

时间:2017-03-07 09:33:26

标签: powershell

我正在尝试远程调用服务器上的命令并更改其IP以及其他设置。我得到以下代码:

Invoke-Command -ComputerName $currentIP {`
$wmi = Get-WmiObject Win32_NetworkAdapterConfiguration -Filter "ipenabled = 'true'";`
$wmi.SetDNSServerSearchOrder($DNSServers);`
$wmi.SetGateways($Defaultgateway);`
$wmi.EnableStatic($newIP,"255.255.255.0")} -Credential $cred 

每个设置都已应用,但在脚本结束时开始运行:

  

与##​​#。##。###。##的网络连接已中断。试图重新连接最多4分钟......

并且继续使连接失败,显然是因为IP已经改变。但是在更改IP之后我不再发出命令了。那么为什么会发生这种情况呢?我该如何阻止呢?

1 个答案:

答案 0 :(得分:4)

您所看到的是预期的行为,因为WinRM不知道IP正在被更改,并且在ScriptBlock执行期间IP更改导致连接中断

为了使关闭更顺畅,您可以使用Invoke-Command参数运行-AsJob,以便不会中断,例如:

invoke-command -ComputerName 192.168.56.103 -Credential administrator -AsJob -ScriptBlock {$wmi = Get-WmiObject Win32_NetworkAdapterConfiguration -Filter "ipenabled = 'true'";$wmi.SetDNSServerSearchOrder("8.8.8.8");$wmi.SetGateways("1.1.1.1");$wmi.EnableStatic("192.168.56.104","255.255.255.0")}