使用以下 powershell 代码,我可以修改远程 Windows 7 机器的静态 IP。
Write-Host("Modifying IP... ")
Invoke-Command -ComputerName $RemoteMachine -Credential $Cred -ScriptBlock {
& {
$adapter = Get-WmiObject win32_NetworkAdapterConfiguration -filter "Index = 7"
$adapter.EnableStatic($Using:NewIP,"255.255.255.0")
} }
这是我脚本的最后一部分。更改IP后,连接丢失。这是意料之中的。问题是脚本仍然尝试重新连接大约 4 分钟,然后它放弃了。输出如下所示:
Modifying IP...
WARNING: The network connection to 10.1.1.50 has been interrupted. Attempting to reconnect for up to 4 minutes...
WARNING: Attempting to reconnect to 10.1.1.50 ...
WARNING: Attempting to reconnect to 10.1.1.50 ...
WARNING: Attempting to reconnect to 10.1.1.50 ...
WARNING: Attempting to reconnect to 10.1.1.50 ...
WARNING: Attempting to reconnect to 10.1.1.50 ...
WARNING: Attempting to reconnect to 10.1.1.50 ...
WARNING: The reconnection attempt to 10.1.1.50 failed. Attempting to disconnect the session...
WARNING: Reconnection attempt canceled. Please repair the network connection and reconnect using Connect-PSSession or Receive-PSSession.
PS C:\Windows\system32>
我怎样才能避免这种情况?
发送命令而不等待任何结果
如果您只想向远程计算机发送命令并且不想等待任何结果,只需使用
-InDisconnectedSession
Invoke-Command 的参数即可。立即发送命令而不等待结果
如果您在一段时间后需要来自远程计算机的结果,但不想立即获得它,那么您必须在仍然使用上述参数的同时使用远程 PSSession。
有关更多信息,请参阅:
您可以使用 $null 或 [void],根本看不到响应,但它仍然会发生,或者,如果您不想看到,您需要使用 try/catch 或 if /then 硬退出脚本它,或者,特别是你想要多少响应的代码。所以这...
或这个...