Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Powershell更改远程服务器的IP会导致断开连接错误_Powershell - Fatal编程技术网

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

使用Powershell更改远程服务器的IP会导致断开连接错误,powershell,Powershell,我正在尝试远程调用服务器上的命令并更改其IP以及其他设置。我得到了以下代码行: Invoke-Command -ComputerName $currentIP {` $wmi = Get-WmiObject Win32_NetworkAdapterConfiguration -Filter "ipenabled = 'true'";` $wmi.SetDNSServerSearchOrder($DNSServers);` $wmi.SetGateways($Defaultgateway);` $

我正在尝试远程调用服务器上的命令并更改其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更改后,我是否不再发出命令。那么,为什么会发生这种情况,我如何才能阻止它呢?

您看到的是预期的行为,因为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不会更改。是否仍有其他方法可以阻止重新连接的尝试?