)
电脑上有一堆每天都要重复的操作我的原则是同一件事手动做第二次就该写成脚本。下面这 6 个 PowerShell 脚本都是我日常真实在用的从备份到监控到看门狗代码可以直接复制改两个路径就能跑。先解决一个拦路虎脚本双击不能跑PowerShell 默认禁止运行脚本。别去改全局策略挂计划任务时加参数绕过就行powershell -NoProfile -ExecutionPolicy Bypass -File D:\Scripts\backup.ps1-NoProfile跳过加载个人配置更快也更干净-ExecutionPolicy Bypass只对这一次执行生效系统安全性不打折。脚本 1robocopy 增量备份只传变化的部分复制大目录还在用全选→复制→粘贴覆盖robocopy 只拷贝新增和修改过的文件几个 GB 的项目目录日常备份只要几秒# backup.ps1 —— 项目目录每日增量备份$srcD:\Projects$dstE:\Backup\Projects$logDirE:\Backup\logsNew-Item-ItemType Directory-Force-Path$logDir|Out-Null$logJoin-Path$logDir(backup-{0}.log-f(Get-Date-FormatyyyyMMdd-HHmmss))# /MIR 镜像同步 /XD 排除目录 /R:2 失败重试2次 /NP 不显示进度日志更干净robocopy$src$dst/MIR/XD bin obj.git node_modules/R:2/W:5/NP/LOG:$log# 日志只保留最近 30 份Get-ChildItem$logDir\backup-*.log|Sort-ObjectName-Descending|Select-Object-Skip 30|Remove-Item-ErrorAction SilentlyContinue注意/MIR是镜像同步——源目录删掉的文件备份里也会删。要保留历史版本就把/MIR换成/E。脚本 2截图、下载目录按日期自动归档下载目录三个月没清就是两百个文件的灾难现场。这个脚本把指定目录的文件按扩展名分类归档# tidy.ps1 —— 整理下载目录$dir$env:USERPROFILE\Downloads$map {.pdf文档.doc文档;.docx文档.zip压缩包;.rar压缩包;.7z压缩包.exe安装包;.msi安装包.png图片;.jpg图片;.jpeg图片}Get-ChildItem$dir-File|ForEach-Object{$target$map[$_.Extension.ToLower()]if($target){$destJoin-Path$dir$targetNew-Item-ItemType Directory-Force-Path$dest|Out-NullMove-Item$_.FullName$dest-Force}}想加类型往$map里添一行就行。脚本 3磁盘空间监控低于阈值弹窗告警服务器或工控机的磁盘被日志写满才会发现让它自己报警# disk-alert.ps1 —— 磁盘剩余低于 10GB 告警Add-Type-AssemblyName System.Windows.FormsGet-PSDrive-PSProvider FileSystem|ForEach-Object{# Free 可能为 null光盘等要过滤if($null-ne$_.Free-and$_.Free-lt10GB){$freeGB[math]::Round($_.Free/1GB,1)$tipNew-ObjectSystem.Windows.Forms.NotifyIcon$tip.Icon [System.Drawing.SystemIcons]::Warning$tip.Visible $true$tip.ShowBalloonTip(10000,磁盘空间告警,盘符$($_.Name): 只剩 ${freeGB} GB 了赶紧清理,[System.Windows.Forms.ToolTipIcon]::Warning)Start-Sleep-Seconds 12# 气泡显示期间脚本不能退出$tip.Dispose()}}零依赖Windows 自带的 .NET 就能弹气泡通知。挂上计划任务每小时跑一次就不用惦记了。脚本 4进程看门狗挂了自动拉起关键程序崩了没人管看门狗脚本每隔几分钟检查一次不在就重新启动# watchdog.ps1 —— 守护 MyServer 进程$nameMyServer$exeD:\Apps\MyServer\MyServer.exeif(-not(Get-Process-Name$name-ErrorAction SilentlyContinue)){Start-Process$exe# 记一笔重启日志方便事后追查Add-Content-PathD:\Apps\watchdog.log-Value ({0} 进程不存在已自动拉起-f(Get-Date-Formatyyyy-MM-dd HH:mm:ss))}这个套路救过我无数次监控采集程序、本地服务、挂机的客户端都靠它续命。配合计划任务每 5 分钟一查稳定性直线上升。脚本 5开机自动校时并记录内网机器时间漂移导致日志对不上、证书报错开机先和时间服务器对一下# time-sync.ps1w32tm/resync/force|Out-NullAdd-Content-PathC:\Logs\time-sync.log-Value ({0} 开机校时完成当前时间{1}-f (Get-Date-Formatyyyy-MM-dd HH:mm:ss),(Get-Date))脚本 6一键汇报当日文件产出我每天收工前要看今天写了哪些文档、改了哪些配置。手动翻太累让脚本干# today.ps1 —— 列出今天修改过的文件$dirsD:\Projects,D:\Docs$today(Get-Date).Date$dirs|ForEach-Object{Get-ChildItem$_-Recurse-File-ErrorAction SilentlyContinue|Where-Object{$_.LastWriteTime-ge$today-and$_.FullName-notmatch\\(bin|obj|\.git)\\}|Select-ObjectLastWriteTime,{n文件;e{$_.FullName}}|Format-Table-AutoSize}跑一下今天干了什么一目了然日报素材直接到手。怎么让它们自动跑一条命令挂计划任务脚本写好了还得让 Windows 定时执行。不用碰图形界面一条命令schtasks /Create /TN 每日备份 /SC DAILY /ST 18:30 ^ /TR powershell -NoProfile -ExecutionPolicy Bypass -File D:\Scripts\backup.ps1 ^ /RU SYSTEM /F参数说明/TN任务名/SC DAILY每天跑/ST 18:30时间点/RU SYSTEM用系统账户执行不弹窗、不用登录。看门狗这类要高频执行的把/SC DAILY /ST 18:30换成/SC MINUTE /MO 5每 5 分钟即可。最后三个避坑提醒中文脚本保存为 UTF-8 with BOM 编码。不带 BOM 的 UTF-8 或纯 ANSI 存中文PowerShell 5.1 可能按 GBK 误读字符串直接乱码甚至语法报错路径带空格要加引号尤其挂进 schtasks 的/TR里整条命令建议再裹一层转义引号先手动跑通再挂任务。计划任务里失败的脚本不会有人看到报错先在命令行里完整执行一遍确认无错再交给系统。这 6 个脚本串起来大概就是一套轻量的个人运维体系数据有备份、磁盘有告警、程序有看门狗、产出有记录。每个脚本都在 20 行以内出了问题随时能看懂、能修改——比任何重型工具都可靠。