[玩转系统] 使用PowerShell重启计算机的有效方法
作者:精品下载站 日期:2024-12-14 13:02:45 浏览:14 分类:玩电脑
使用PowerShell重启计算机的有效方法
系统管理员不可避免地需要重新启动服务器或系统。为什么不使用 PowerShell 重新启动计算机(或许多计算机!),而不是单步执行用户界面?
在本文中,您将学习使用 PowerShell 管理计算机重新启动的所有方法。我们将比仅仅使用 Restart-Computer
cmdlet 更深入。
我们走吧!
先决条件
本教程将引导您了解使用 PowerShell 重新启动计算机的各种方法。如果您打算继续操作,请确保您具备以下条件:
- 本地管理员组中任何计算机(本地或远程)上的用户帐户
- Windows PowerShell 或 PowerShell Core。本教程将使用 Windows PowerShell 5.1。
- WinRM 已配置并允许通过远程计算机的 Windows 防火墙,并且允许 WMI 通过 Windows 防火墙
使用 PowerShell 通过 Restart-Computer
重新启动计算机
第一个 PowerShell 特定方法(也是最常见的)是 PowerShell Restart-Computer
cmdlet。该 cmdlet 使用简单,参数灵活,其中一些参数使脚本集成变得非常容易。
正如您在下面的示例中看到的,这通常是大多数 PowerShell 脚本最直接的方法和首选解决方案。
下面的简单示例连接到名为 SRV1 的远程计算机。要跳过默认确认,它使用 Force
参数重新启动计算机。
Restart-Computer -ComputerName SRV1 -Force
Restart-Computer
cmdlet 有几个参数来配置命令如何与计算机交互,如下所示。
ComputerName
- 您打算重新启动的系统。此参数可以采用以下远程地址、NetBIOS、IP 地址或完全限定域名 (FQDN)。对于本地系统,请使用.
、localhost
或省略该参数。强制
- 如果系统上当前有其他用户,则使用。这将强制关闭。Wait
- 此参数将无限期地阻止提示和管道(除非与超时参数配对)。它与For
参数结合使用,以轮询特定组件是否可用。Timeout
- 与Wait
参数一起使用,这将确保出现问题时重新启动不会无限期地阻止提示和管道。For
- PowerShell 可以查找一些组件来指示重新启动成功。默认情况下,Restart-Computer
会查看 PowerShell 本身是否正在运行以指示重新启动操作成功。另一种选择是等待 WMI 或 WinRM 可用。Delay
- 默认情况下,cmdlet 将每隔5
秒轮询一次以检查定义的组件,同时等待远程系统变得可用。该参数将覆盖默认的延迟时间段。
ComputerName
参数不使用 WinRM 进行远程系统调用,因此,您无需担心本地系统是否配置为 WinRM。
使用 PowerShell 通过 Invoke-CimMethod
重新启动计算机
Invoke-CimMethod
并非专门用于远程重新启动系统,它通过使用 WIM 方法来重新启动远程系统。不像 Restart-Computer
cmdlet 那样灵活,您可以使用 PowerShell 使用本机命令远程重新启动计算机。
确保 WinRM 已配置并允许通过此方法的远程计算机的 Windows 防火墙。
Invoke-CimMethod -ComputerName SRV1 -ClassName 'Win32_OperatingSystem' -MethodName 'Reboot'
Invoke-CimMethod
有一些您应该注意的参数。
ClassName
- 要使用的 CIM 类的名称。对于重新启动命令,我们使用Win32_OperatingSystem
类。ComputerName
- 使用 WsMan 协议,您可以使用以下任意远程地址类型:NetBIOS、IP 地址或完全限定域名 (FQDN)。如果省略该参数,则使用 COM 执行本地操作。MethodName
- 方法名称是目标类的 WMI 方法。在重新启动操作的情况下,您将需要使用Reboot
方法。
使用 PowerShell 通过运行 shutdown.exe
远程重新启动计算机
从特定于 PowerShell 的 cmdlet 开始,我们来到 Windows 提供的用于重新启动系统的标准内置可执行文件。 shutdown.exe
可执行文件已经存在很长时间了,并提供了一系列强大的选项。
虽然从技术上讲不是 PowerShell cmdlet,但您仍然可以使用 PowerShell 通过作为可执行文件调用来重新启动带有 shutdown.exe 的计算机。
确保远程计算机启用了远程注册表服务,并且允许 WMI 通过此方法的 Windows 防火墙。
shutdown.exe /m \remotecomputer /r /t 0
以下是您应该了解的关闭命令的参数。
r
- 首次关闭系统后重新启动计算机。g
- 这与r
命令类似,但也会在启动时重新启动所有已注册的应用程序。 Windows Vista 中引入的 Windows 重新启动管理器允许正常关闭和重新启动在此系统中注册的应用程序。一个例子是 Outlook 应用程序,如果它在关闭时最初打开,它会自动启动备份。e
- 记录系统意外重启的原因。m
- 要重新启动的远程系统,采用\computername
参数。t
- 启动重新启动操作之前的时间(以秒为单位)。如果定义的值大于0
,则隐含f
(强制)参数。默认值为30
秒,但不强制。c
- 可选的重新启动消息,将在关闭前显示在屏幕上以及 Windows 事件日志注释中,最多可包含 512 个字符。f
- 强制关闭所有正在运行的应用程序,这不会在任何应用程序中提示“文件→保存”提示,并可能导致数据丢失。d
- 重新启动操作的原因代码列表。此类原因代码的示例是P:2:18
,它对应于操作系统:安全修复(计划)。
使用 PowerShell 通过 PSExec.exe
重新启动计算机
使用 PowerShell 重新启动计算机是通过 Sysinternals 工具包中最常用的实用程序之一,psexec.exe
提供了多种独特的功能,使与远程系统的交互变得容易。 psexec.exe
采用与 PowerShell 和内置实用程序不同的方法,在远程系统上创建一个服务,然后通过该服务代理命令。
确保 SMB 服务正在运行,文件和打印机共享已启用,简单文件共享已禁用,并且 admin$管理共享可用于此方法。
psexec.exe -d -h \remotecomputer "shutdown.exe /r /t 0 /f"
d
- 以非交互方式使用psexec
,无需等待进程终止,这在脚本中很有用。h
- 如果目标系统是 Vista 或更高版本,请使用帐户的提升令牌(如果可用)运行此过程。n
- 指定连接到远程计算机时的超时(以秒为单位)。s
- 使用系统帐户运行进程,这比典型的管理帐户授予更高级别的访问权限。这并不总是需要或使用,但却是一种非常有用的能力。computer
- 采用\remotecomputer
形式的位置参数,允许对远程系统使用psexec
。cmd
- 另一个位置参数,用于指定针对系统运行的实际命令。由于 psexec 本身不会重新启动系统,因此该命令将是另一个实用程序,例如用于重新启动系统的 shutdown.exe。arguments
- 此位置参数包含需要传递给先前定义的cmd
的任何参数。accepteula
- 如果psexec
未记录您已接受 EULA,该工具通常会在屏幕上显示接受 EULA 的提示。这将接受 EULA,而无需图形提示。nobanner
- 连接到远程系统时,该工具会显示横幅信息,nobanner
将抑制该信息。
奖金方法!
下面显示的方法不是很常用,但根据需要可能很有用。
运行DLL32.exe
rundll32.exe 提供了一种针对内部可执行文件和 Windows API(例如 shell32.dll)运行某些方法的方法。您可以通过两种方法使用此功能重新启动系统。
rundll32.exe user.exe ExitWindowsExec
- 重新启动本地系统。rundll32.exe shell32.dll,SHExitWindowsEx 2
- 还将重新启动本地系统。
此方法本身无法实际远程使用,但您可以通过远程系统上的 Invoke-Command
将此方法与 PowerShell 结合使用。
# Method 1
Invoke-Command -ComputerName $ComputerName -ScriptBlock { & rundll32.exe user.exe ExitWindowsExec }
# Method 2
Invoke-Command -ComputerName $ComputerName -ScriptBlock { & rundll32.exe shell32.dll,SHExitWindowsEx 2 }
任务终止程序
最后,taskkill.exe 是另一个 Windows 实用程序,它提供了一些重新启动计算机的功能,尽管是以一种迂回的方式。通过结束 lsass.exe 进程,您将强制 Windows 重新启动。
taskkill.exe /S \remotecomputer /IM lsass.exe /F
使用PowerShell重启计算机(多系统并行)
大多数系统管理员都需要在某一时刻重新启动多个系统。让我们快速浏览一下如何将这些命令结合在一起来完成此操作。
使用 PowerShell 7 和 Restart-Computer
命令可以轻松并行地重新启动计算机。
$ComputerArray | ForEach-Object -Parallel {
Restart-Computer -ComputerName $_ -Force
} -ThrottleLimit 3
正如您可以通过较新的 ForEach-Object -Parallel
功能看出的,在命令中添加并行化非常简单。由于 Restart-Computer
与 ForEach-Object
结合使用,本身就支持远程重启,因此可以快速轻松地管理和重启大型系统!
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[网赚] 今日头条微头条新手玩法揭秘:每天高收益实操教程,轻松变现不踩坑
[影视] 【香港】经典电影合集-170部(未删减版本)
[动画] BASTARD暗黑破坏神S01
[软件合集] 25年6月14日 精选软件29个
[短剧] 2025年06月14日 精选+付费短剧推荐35部
[酷站] Sordum:专注于 Windows 系统的小而美实用工具站
[趣站] CS 1.6 在线版免费游玩,无需注册,支持多种游戏模式与地图
[AI工具] AI 工具自用总结推荐合集:写作、设计、剪辑、搜索各有所长
[酷站] 全网影视资源站大全(2025年度整理)
[软件合集] 25年6月13日 精选软件24个
[影视] 【香港】经典电影合集-170部(未删减版本)
[短剧] 2025年06月07日 精选+付费短剧推荐54部
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[软件合集] 25年6月6日 精选软件64个
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[短剧] 2025年06月07日 精选+付费短剧推荐54部
[趣站] CS 1.6 在线版免费游玩,无需注册,支持多种游戏模式与地图
[软件合集] 25年6月6日 精选软件64个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
- 最新评论
-
- 热门tag