【问题标题】:Changing IP of remote server with Powershell gives disconnection error使用 Powershell 更改远程服务器的 IP 会导致断开连接错误
【发布时间】:2017-03-07 22:40:52
【问题描述】:

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

【问题讨论】:

  • 好吧,IP 已更改。你期待什么???
  • 因为 IP 更改发生在向远程服务器发出的最后一个命令中。更改IP后,我希望它会关闭连接。不要打断它。
  • Powershell 怎么会知道呢?它不会那样工作。连接会断开,因为 Powershell 不会期望 IP 发生变化。
  • 无论如何我可以抑制重新连接的尝试吗?

标签: powershell


【解决方案1】:

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

为了更顺畅的关闭连接,您可以使用-AsJob参数运行Invoke-Command,这样它就不会被中断例如:

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")}

【讨论】:

    猜你喜欢
    • 2017-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-16
    • 2014-01-25
    • 2014-12-09
    相关资源
    最近更新 更多