powershell 的 try、catch、finally 用于处理终止错误。许多 cmdlet 默认产生的是非终止错误,不会自动进入 catch,因此需要在关键命令上使用 -erroraction stop。错误处理应记录明确上下文,但不要把密码、令牌或完整敏感路径写进公开日志。
把可能失败的命令放进 try
例如写入 try { Get-Content -LiteralPath 'D:\data\missing.txt' -ErrorAction Stop }。-ErrorAction Stop 会把读取失败提升为可捕获的终止错误;若省略,脚本可能显示红字后仍继续运行,导致后续逻辑使用空数据。

在 catch 中读取异常并返回失败状态
继续写入 catch { Write-Error "读取配置失败:$($_.Exception.Message)"; exit 1 }。$_ 在 catch 中代表当前错误记录,可查看 Exception、CategoryInfo 和 FullyQualifiedErrorId。自动化脚本应返回非零退出码,让计划任务或上层程序识别失败。

用 finally 完成必要清理
需要无论成功失败都释放资源时加入 finally { Write-Verbose '处理结束' }。文件句柄、网络连接和临时目录应在 finally 中关闭或清理,但不要在这里无条件删除仍需排查的日志。分别测试成功路径和失败路径,确认 catch 与 finally 都按预期执行。


















