PowerShell是Windows原生自动化编程环境,核心在于操作.NET对象、调用API/CIM接口实现可复用脚本;首步需设RemoteSigned执行策略,脚本保存为UTF-8无BOM的.ps1文件并用.\调用,从清理临时文件、批量重命名、导出系统报告等高频任务起步,再通过Register-ScheduledTask定时运行,最终延伸至PSRemoting批量管理。
powershell 是 windows 原生的自动化核心工具,不是“替代命令提示符的高级终端”,而是面向系统管理的编程环境。它直接操作 .net 对象、调用 windows api 和 cim/wmi 接口,能完成图形界面难以批量处理的任务。关键不在于写得多复杂,而在于把重复动作变成可复用、可验证、可调度的脚本。
先让脚本能跑起来
几乎所有自动化第一步都会卡在执行策略上。Windows 默认禁止运行本地脚本,这不是障碍,而是安全基线。
- 以管理员身份打开 PowerShell,运行:Get-ExecutionPolicy 确认当前状态
- 若显示 Restricted,执行:Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
- 该设置只影响当前用户,不降低系统安全性,允许你运行自己写的脚本和已签名的官方模块
- 保存脚本时务必用记事本或 VS Code(UTF-8 无 BOM),扩展名必须是 .ps1,双击无效,必须用 .\script.ps1 方式调用
从高频任务开始写脚本
不必追求一步到位。选一个你每周至少手动做一次的操作,把它脚本化,就是自动化真正的起点。
-
清理临时文件:一行命令就能清空多处缓存
Remove-Item "$env:TEMP\*", "$env:USERPROFILE\AppData\Local\Temp\*" -Recurse -Force -ErrorAction SilentlyContinue -
批量重命名文件:比如把桌面所有 PDF 加上日期前缀
Get-ChildItem Desktop\*.pdf | Rename-Item -NewName {"$(Get-Date -Format 'yyyyMMdd')_$($_.Name)"} -
导出系统信息:生成带主机名、内存、CPU、上次启动时间的简明报告
[PSCustomObject]@{Computer=$env:COMPUTERNAME; RAM_GB=[math]::Round((Get-CimInstance Win32_ComputerSystem).TotalPhysicalMemory/1GB,1); UptimeDays=[int](((Get-Date) - (Get-CimInstance Win32_OperatingSystem).LastBootUpTime).TotalDays)} | Export-Csv C:\report.csv -NoTypeInformation
让脚本按时自动运行
写完脚本只是半成品。真正自动化,是让它在你不需要干预时准时执行。
- 用 Register-ScheduledTask 命令注册任务,比图形界面更可靠、可复现
例如每天凌晨 2 点运行清理脚本:Register-ScheduledTask "DailyClean" -Action (New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-File C:\Scripts\clean.ps1") -Trigger (New-ScheduledTaskTrigger -Daily -At "02:00") - 任务创建后,用 Get-ScheduledTask "DailyClean" 查看状态,用 Start-ScheduledTask "DailyClean" 手动触发测试
- 避免使用“启动时运行”类触发器——它依赖用户登录,更适合后台服务或系统级任务
进阶:批量管理与远程控制
当单机脚本稳定后,自然会延伸到多台设备。PowerShell Remoting 不是“高级技巧”,而是标准运维路径。
- 在目标电脑上启用远程(管理员权限):Enable-PSRemoting -Force
- 一次查多台服务器的磁盘使用率:$servers = "srv01","srv02"; Invoke-Command -ComputerName $servers -ScriptBlock { Get-PSDrive C | Select-Object ComputerName,Used,Free }
- 远程部署组件更安全:不用复制安装包,直接调用 Add-WindowsCapability 或 winget install,全程受控、可审计











