Windows怎么使用PowerShell脚本批量管理电脑

云辰大大_7788

云辰大大_7788

2026-11-10

570人浏览

原创

企业批量管理Windows电脑需先启用PSRemoting、测试WinRM连通性、确保管理员权限;再通过Invoke-Command远程执行重命名、信息采集、MSI安装、临时文件清理等操作,提升运维效率。

windows怎么使用powershell脚本批量管理电脑

你需要在企业环境中一次性对几十台Windows电脑执行相同配置、安装、检查或清理操作,避免逐台手动点开设置、运行命令、复制文件的低效重复劳动。

准备工作:让目标电脑能被远程控制

所有批量操作的前提是目标电脑必须“听得到”你的PowerShell指令。这需要三步确认:

第一步:在每台目标电脑上以管理员身份运行 PowerShell,执行 【Enable-PSRemoting -Force】。这条命令会启用WinRM服务、配置监听端口、打开防火墙规则——缺一不可,否则后续所有远程命令都会失败。

第二步:测试连通性。在你自己的控制机上运行:Test-WsMan 192.168.1.10(把IP换成任一台目标机地址)。如果返回包含“wsmid”和“ProtocolVersion”的完整对象,说明通信链路已通;若报错“无法连接到远程主机”,请回头检查第一步是否执行、目标机是否开机且在同一网段。

第三步:确保你当前登录的账户在每台目标机上具有本地管理员权限。域环境直接用域管理员账号;工作组环境需提前在每台目标机的“本地用户和组”中将你的账户加入Administrators组。

批量重命名并立即重启(生产环境推荐)

适用于新采购设备统一命名、旧资产回收后重新规划等场景。名称必须符合NetBIOS规则:15字符以内、仅含字母数字和短横线、不能以数字或短横线开头。

方法一:使用数组映射方式(最清晰可控)

新建文本文件,保存为 RenameAndReboot.ps1,内容如下(替换方括号内示例):

[string[]]$Computers = "PC-A", "PC-B", "PC-C"<br>$NewNames = "WKSTN-OPS-01", "WKSTN-OPS-02", "WKSTN-OPS-03"<br>for ($i = 0; $i -lt $Computers.Count; $i++) {<br>  Invoke-Command -ComputerName $Computers[$i] -ScriptBlock {<br>    Rename-Computer -NewName $using:NewNames[$i] -Force -Restart<br>  } -ErrorAction Continue<br>}

在控制机上右键以管理员身份运行该脚本。每台电脑将在改名后自动重启,无需人工干预。

方法二:从文本文件读取主机列表(适合上百台)

先准备一个纯文本文件 targets.txt,每行一个主机名或IP:

192.168.1.10<br>192.168.1.11<br>SRV-DB-01

然后运行:$list = Get-Content . argets.txt; $list | ForEach-Object { Invoke-Command -ComputerName $_ -ScriptBlock { Rename-Computer -NewName ("NEW-" + (Get-Random -Minimum 1000 -Maximum 9999)) -Force -Restart } -ErrorAction SilentlyContinue }

注意:此方式生成随机名,仅用于临时测试,正式环境请勿使用。

Windows 图片打印
Windows 图片打印

通过 Python 使用 mspaint /pt 在 Windows 上打印图像——绕过 bash 中文路径编码问题。

下载

批量查询系统信息并导出报表

快速掌握全网设备基础状态,避免一台台远程桌面登录查看。

在控制机上直接运行以下命令(无需提前写脚本):

$targets = "PC001", "PC002", "PC003"; $report = Invoke-Command -ComputerName $targets -ScriptBlock {<br>  [PSCustomObject]@{<br>    Hostname = hostname<br>    OS = (Get-CimInstance Win32_OperatingSystem).Caption<br>    RAM_GB = [math]::Round((Get-CimInstance Win32_PhysicalMemory | Measure-Object Capacity -Sum).Sum / 1GB, 1)<br>    Uptime_Days = [math]::Floor((Get-Date) - (Get-CimInstance Win32_OperatingSystem).LastBootUpTime | Select-Object -ExpandProperty Days)<br>  }<br>} | Select-Object Hostname, OS, RAM_GB, Uptime_Days;<br>$report | Export-Csv -Path .inventory_report.csv -NoTypeInformation -Encoding UTF8

执行完成后,当前目录下会生成 inventory_report.csv,双击可用Excel打开。该命令一次获取主机名、系统版本、内存总量、已运行天数四项关键指标,字段明确,无需后期清洗。

批量安装MSI软件包

适用于部署打印机驱动、内部工具、安全客户端等标准安装包。

确保安装包(如 agent.msi)已放在所有目标机都能访问的网络路径,例如 \fileserverinstallgent.msi。

运行以下命令:

$computers = "PC001", "PC002"; $installer = "\fileserverinstallgent.msi"; $computers | ForEach-Object {<br>  Invoke-Command -ComputerName $_ -ScriptBlock {<br>    Start-Process msiexec.exe -ArgumentList "/i $using:installer /quiet /norestart" -Wait<br>  } -ErrorAction Continue<br>}

该命令使用 /quiet 参数静默安装,不弹窗不交互;/norestart 避免安装过程触发意外重启。安装日志默认写入 %windir%TempMSI*.log,如需排查失败原因,可远程登录对应机器查看。

批量清理指定路径下的临时文件

针对研发、设计等部门电脑C盘空间告急问题,统一清理项目缓存、渲染临时文件等。

假设所有目标机的临时文件都存放在 C:ProjectsTemp,执行:

$targets = "DEV-01", "DEV-02", "DESIGN-01"; $targets | ForEach-Object {<br>  Invoke-Command -ComputerName $_ -ScriptBlock {<br>    if (Test-Path "C:ProjectsTemp") {<br>      Remove-Item -Path "C:ProjectsTemp*" -Recurse -Force -ErrorAction SilentlyContinue<br>      Write-Host "✅ 已清空 C:ProjectsTemp"<br>    } else { Write-Host "⚠️ C:ProjectsTemp 不存在" }<br>  }<br>}

这一步会跳过不存在该路径的机器,不会报错中断;同时输出明确提示,便于你快速定位哪些机器未按规范存放临时文件。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

windows shell脚本

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
windows查看端口占用情况
windows查看端口占用情况

Windows端口可以认为是计算机与外界通讯交流的出入口。逻辑意义上的端口一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。怎么查看windows端口占用情况呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.26

3439

3

查看端口占用情况windows
查看端口占用情况windows

端口占用是指与端口关联的软件占用端口而使得其他应用程序无法使用这些端口,端口占用问题是计算机系统编程领域的一个常见问题,端口占用的根本原因可能是操作系统的一些错误,服务器也可能会出现端口占用问题。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.27

2998

6

windows照片无法显示
windows照片无法显示

当我们尝试打开一张图片时,可能会出现一个错误提示,提示说"Windows照片查看器无法显示此图片,因为计算机上的可用内存不足",本专题为大家提供windows照片无法显示相关的文章,帮助大家解决该问题。

2023.08.01

1548

3

windows查看端口被占用的情况
windows查看端口被占用的情况

windows查看端口被占用的情况的方法:1、使用Windows自带的资源监视器;2、使用命令提示符查看端口信息;3、使用任务管理器查看占用端口的进程。本专题为大家提供windows查看端口被占用的情况的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.02

2719

5

windows无法访问共享电脑
windows无法访问共享电脑

在现代社会中,共享电脑是办公室和家庭的重要组成部分。然而,有时我们可能会遇到Windows无法访问共享电脑的问题。这个问题可能会导致数据无法共享,影响工作和生活的正常进行。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.08.08

3350

4

windows自动更新
windows自动更新

Windows操作系统的自动更新功能可以确保系统及时获取最新的补丁和安全更新,以提高系统的稳定性和安全性。然而,有时候我们可能希望暂时或永久地关闭Windows的自动更新功能。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.10

1717

3

windows boot manager
windows boot manager

windows boot manager无法开机的解决方法:1、系统文件损坏,使用Windows安装光盘或USB启动盘进入恢复环境,选择修复计算机,然后选择自动修复;2、引导顺序错误,进入恢复环境,选择命令提示符,输入命令"bootrec /fixboot"和"bootrec /fixmbr",然后重新启动计算机;3、硬件问题,使用硬盘检测工具进行扫描和修复;4、重装操作系统。本专题还提供其他解决

2023.08.28

2537

4

windows锁屏快捷键
windows锁屏快捷键

windows锁屏快捷键是Windows键+L、Ctrl+Alt+Del、Windows键+D、Windows键+P和Windows键+R。本专题为大家提供windows相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.30

5407

5

Window.setInterval()方法
Window.setInterval()方法

Window.setInterval() 方法的基本语法是“window.setInterval(function, delay)”,function是要重复执行的函数或代码块,delay是每次执行之间的时间间隔,以毫秒为单位。本专题为大家提供Window.setInterval()相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.31

835

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Conan 2 安装指南
Conan 2 安装指南

共0课时 | 0人学习