使用Powershell更改远程服务器的IP会导致断开连接错误
我正在尝试远程调用服务器上的命令并更改其IP以及其他设置。我得到了以下代码行:使用Powershell更改远程服务器的IP会导致断开连接错误,powershell,Powershell,我正在尝试远程调用服务器上的命令并更改其IP以及其他设置。我得到了以下代码行: Invoke-Command -ComputerName $currentIP {` $wmi = Get-WmiObject Win32_NetworkAdapterConfiguration -Filter "ipenabled = 'true'";` $wmi.SetDNSServerSearchOrder($DNSServers);` $wmi.SetGateways($Defaultgateway);` $
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更改后,我是否不再发出命令。那么,为什么会发生这种情况,我如何才能阻止它呢?您看到的是预期的行为,因为WinRM不知道IP正在被更改,并且在
脚本块
执行过程中,IP更改导致连接中断
为了更顺畅地关闭连接,您可以使用-AsJob
参数运行Invoke命令
,这样它就不会被中断,例如:
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")}
您看到的是预期的行为,因为WinRM不知道IP正在更改,并且在
ScriptBlock
执行过程中,IP更改导致连接中断
为了更顺畅地关闭连接,您可以使用-AsJob
参数运行Invoke命令
,这样它就不会被中断,例如:
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")}
嗯,IP已经改变了。由于IP更改发生在向远程服务器发出的最后一个命令中,因此您希望得到什么。更改IP后,我希望它会关闭连接。不要打断,Powershell怎么会知道?它不会那样工作的。连接将断开,因为Powershell不希望IP发生更改。我是否可以阻止重新连接的尝试?嗯,IP已更改。由于IP更改发生在向远程服务器发出的最后一个命令中,因此您希望得到什么。更改IP后,我希望它会关闭连接。不要打断,Powershell怎么会知道?它不会那样工作的。连接将断开,因为Powershell预计IP不会更改。是否仍有其他方法可以阻止重新连接的尝试?