如何使用 PowerShell 远程重新启动 Windows 计算机

Jacki

系统管理员经常需要远程重新启动 Windows 计算机以进行维护、更新或故障排除。 PowerShell 提供了几种有效的方法来完成此任务。本文探讨了使用 PowerShell 远程重新启动 Windows 计算机的六种有效技术,从简单的 cmdlet 到更高级的方法。

远程重启的先决条件

在尝试重新启动远程 Windows 计算机之前,请确保您已:

  • 在远程计算机上具有本地管理员权限的用户帐户。
  • 安装在本地计算机上的 PowerShell 或 PowerShell Core。
  • Windows 远程管理 (WinRM) 已配置并允许通过远程计算机的防火墙。
  • Windows Management Instrumentation (WMI) 允许通过远程计算机的防火墙。

在继续执行任何重新启动命令之前,验证远程系统是否尚未等待重新启动也很重要。

方法 1:使用重新启动计算机 Cmdlet

Restart-Computercmdlet 是重新启动远程 Windows 计算机的最直接、最灵活的方法。

步骤一:在本地计算机上以管理员身份打开 PowerShell。

步骤2:使用以下命令重新启动单个远程计算机:

Restart-Computer -ComputerName "RemotePC" -Force

将“RemotePC”替换为要重新启动的远程计算机的实际名称或 IP 地址。

步骤3:要并行重启多台计算机,可以使用以下命令:

$ComputerArray | ForEach-Object -Parallel {
    Restart-Computer -ComputerName $_ -Force
} -ThrottleLimit 3

此命令使用 PowerShell 的并行处理功能同时重新启动多台计算机,并以 3 的节流限制来控制资源使用。

方法 2:利用 Invoke-CimMethod

Invoke-CimMethodcmdlet 使用 Windows Management Instrumentation (WMI) 重新启动远程系统。

步骤一:以管理员身份打开 PowerShell。

步骤2:执行以下命令:

Invoke-CimMethod -ComputerName "RemotePC" -ClassName 'Win32_OperatingSystem' -MethodName 'Reboot'

将“RemotePC”替换为目标计算机的名称或 IP 地址。

当使用具有特定 WMI 配置的系统时,或者当您需要在重新启动操作的同时执行其他 WMI 相关任务时,此方法特别有用。

方法 3:使用 shutdown.exe 命令

shutdown.exe命令是一个内置的 Windows 实用程序,可用于重新启动远程计算机。

步骤一:以管理员身份打开 PowerShell。

步骤2:运行以下命令:

shutdown.exe /m \RemotePC /r /t 0

将“RemotePC”替换为您要重新启动的远程计算机的名称。

此方法需要在远程计算机上启用远程注册表服务,并且允许 WMI 通过 Windows 防火墙。

方法 4:使用 PSExec.exe

PSExec.exe 是 Sysinternals 工具包的一部分,提供与远程系统交互的独特功能。

步骤一:从 Microsoft 官方网站下载并安装 Sysinternals Suite。

步骤2:以管理员身份打开 PowerShell 并导航到包含 PSExec.exe 的目录。

步骤3:执行以下命令:

.psexec.exe -d -h \RemotePC "shutdown.exe /r /t 0 /f"

将“RemotePC”替换为目标计算机的名称。

此方法要求 SMB 服务正在运行,启用文件和打印机共享,禁用简单文件共享,并且 admin$ 管理共享在远程计算机上可用。

方法 5:通过 Invoke-Command 使用 RunDLL32.exe

该方法结合了rundll32.exe使用 PowerShell 的Invoke-Command重新启动远程系统。

步骤一:以管理员身份打开 PowerShell。

步骤2:运行以下命令之一:

方法 5a:

Invoke-Command -ComputerName "RemotePC" -ScriptBlock { & rundll32.exe user.exe,ExitWindowsExec }

方法5b:

Invoke-Command -ComputerName "RemotePC" -ScriptBlock { & rundll32.exe shell32.dll,SHExitWindowsEx 2 }

将“RemotePC”替换为远程计算机的名称或 IP 地址。

当您需要在重新启动过程中执行其他远程操作时,这些方法非常有用。

方法 6:使用 Taskkill.exe 强制重新启动

此方法通过终止关键系统进程来强制 Windows 重新启动。

步骤一:以管理员身份打开 PowerShell。

建议阅读:如何远程关闭或重新启动 Windows PC

步骤2:执行以下命令:

taskkill.exe /S \RemotePC /IM lsass.exe /F

将“RemotePC”替换为目标计算机的名称。

警告:此方法应作为最后的手段使用,因为它会强制终止关键的 Windows 进程。如果不小心使用,可能会导致数据丢失或系统不稳定。

这六种方法为系统管理员提供了一系列使用 PowerShell 远程重新启动 Windows 计算机的选项。选择最适合您的特定要求和网络配置的方法。请记住,在生产环境中使用这些命令之前,请先在受控环境中对其进行测试。