我正在尝试远程调用服务器上的命令并更改其 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
Run Code Online (Sandbox Code Playgroud)
每个设置都已应用,但在脚本结束时它开始进行:
与 ###.##.###.## 的网络连接已中断。尝试重新连接长达 4 分钟...
并且继续连接失败,显然是因为IP已更改。但是IP更改后我不再发出命令了吗?那么为什么会发生这种情况以及如何阻止它呢?
您看到的是预期行为,因为 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")}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
978 次 |
| 最近记录: |