当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 使用 PowerShell 重新启动所有域计算机

作者:精品下载站 日期:2024-12-14 07:17:18 浏览:13 分类:玩电脑

使用 PowerShell 重新启动所有域计算机


在本文中,我将展示如何使用命令 Restart-Computer 强制重新启动所有域计算机。

准备

按组织单位列出所有计算机名称

首先,我需要所有域计算机的列表。在清理的环境中,所有域计算机都存储在单独的组织单位中。如果是这种情况,则可以在那里检索所有计算机的列表。


(Get-ADComputer -Filter * -SearchBase "OU=Workstations,DC=pagr,DC=inet").Name | Out-File c:\Temp\computers.txt

计算机名称存储在文件中。您还可以使用变量。

[玩转系统] 使用 PowerShell 重新启动所有域计算机

按属性列出所有计算机名称

正如已经提到的,整洁的环境很少见。域计算机可能在附近的某个地方,有一个 tohuwabohu(热门提示:容器计算机)。然后,您可以使用操作系统属性来搜索它们以捕获所有它们。所有客户端计算机,但没有服务器。


(Get-ADComputer -Filter 'operatingsystem -notlike "*server*"').Name | Out-File C:\Temp\computers.txt

防火墙:WMI 传入

必须在所有域计算机上启用 WMI 入站防火墙规则。这可以手动或通过组策略完成。

[玩转系统] 使用 PowerShell 重新启动所有域计算机

重启行动

我建议所有读者现在停下来问问自己:“你真的想重新启动所有这些计算机吗?” ? 仔细控制计算机列表。现在所有计算机都已重新启动。打开的文件不会被保存,并且用户会被注销。如果你发现“错误”,这可能会令人不快。


Restart-Computer -ComputerName (Get-Content C:\Temp\computers.txt) -Force -ErrorAction SilentlyContinue -ErrorVariable NoRestart

即使用户已登录,-Force 参数也会强制重新启动。 -ErrorAction 参数不显示任何错误(数据库中的计算机可能处于脱机状态)。 -ErrorVariable 参数将错误存储在变量 NoRestart 中。

错误

完成后可以看到我的机器client01无法访问。此信息存储在变量 NoRestart 中。

[玩转系统] 使用 PowerShell 重新启动所有域计算机

未重新启动的计算机列表将按计算机名称保存。要进行检查,请运行以下命令以按计算机名称检索所有“不重新启动”计算机并将它们保存在文件中。


$NoRestart.targetobject | Out-File C:\Temp\NoRestart.txt

结论

此方法不能替代 SCCM 等企业解决方案。但对于那些无法使用企业解决方案的人来说,本文可以帮助您通过 PowerShell 中的 One-Liner 重新启动所有计算机。

要在所有域计算机上强制执行 gpupdate,请参阅我的文章:PowerShell:在所有域计算机上强制执行 gpupdate

要记录您的环境,请参阅:PowerShell:通过在所有域计算机上运行 systeminfo 来记录您的环境

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯