如何使用PowerShell重启远程系统?


要重启远程计算机,您需要使用由计算机名提供的 **Restart-Computer** 命令。例如:

Restart-Computer -ComputerName Test1-Win2k12

上述命令将自动重启计算机 **Test1-Win2k12**,如果您有多台远程计算机需要重启,您可以用逗号 (,) 分隔提供多台计算机。例如:

Restart-Computer -ComputerName Test1-Win2k12, Test2-Win2k12

在上例中,重启信号将同时发送到两台计算机。

您也可以使用管道来重启远程计算机。例如:

"Test1-Win2k12","Test2-Win2k12" | Restart-Computer -Verbose

或者

(Get-Content C:\Servers.txt) | Restart-Computer -Verbose

一些服务器依赖于其他服务器,因此主服务器需要先重启。例如,AD 和 Exchange 服务器。如果您在同一命令行中指定这两台服务器,则两台服务器将同时重启,而这并非我们所需。为了解决这个问题,您需要一次只传递一台服务器,编写一些服务器重启后检查清单的步骤,然后转到下一台服务器。您可以将服务器添加到数组或文本文件中,然后通过 foreach 循环传递单个值,以及重启后检查清单的步骤,然后转到下一台服务器。

人们经常将 **-Wait** 参数与 Restart-Computer cmdlet 混淆,**-Wait** 参数将在一台服务器的重启后检查清单完成后再重启下一台服务器,但 **-Wait** 参数仅对每台指定的计算机执行三个主要的检查清单,例如 **WinRM、WMI** 和 **PowerShell** 连接检查,但在服务器启动后它无法阻止服务器重启的执行。

**Restart-Computer** 向所有计算机发送重启命令,**-Wait** 参数对每台计算机执行指定的测试,即使远程计算机检查失败,服务器也会重启。

当有人登录到远程服务器时,PowerShell 无法重启远程服务器并抛出以下错误消息。

PS C:\Users\Administrator> Restart-Computer test1-win2k12 –Verbose
VERBOSE: Performing the operation "Enable the Remote shutdown access rights
and restart the computer." on target "test1-win2k12".
Restart-Computer : Failed to restart the computer test1-win2k12 with the
following error message:
The system shutdown cannot be initiated because there are other users logged
on to thecomputer.
At line:1 char:1+ Restart-Computer test1-win2k12 -Verbose+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (test1-win2k12:String) [Restart-
Computer], InvalidOperationException
+ FullyQualifiedErrorId :
RestartcomputerFailed,Microsoft.PowerShell.Commands.RestartComputerCommand

要强制重启计算机,您需要使用 **-Force 参数**。

Restart-Computer Test1-Win2k12 -Force

更新于:2020年7月24日

2K+ 次浏览

启动你的职业生涯

通过完成课程获得认证

开始学习
广告
© . All rights reserved.