如何触发该PowerShell脚本错误并将错误捕获写入日志文件
手动触发PowerShell脚本错误及错误捕获测试方法
可快速复现的错误测试场景
- 权限不足场景:对目标路径(如
D:\ToolUpload\Retail-EIP、D:\Backup)或源文件配置权限限制:右键目标文件夹→属性→安全→编辑,选中当前运行脚本的用户,勾选「写入」权限的「拒绝」复选框,运行脚本时移动文件操作会直接触发权限不足错误。 - 文件被占用场景:在源路径
c:\uploadtool\下新建符合命名规则的测试文件,如test-Retail-EIP.txt,用记事本/Office软件打开该文件保持不关闭,此时文件处于锁定状态,脚本执行Move-Item时会触发文件被占用的报错。 - 目标路径无效场景:临时修改脚本中的目标路径变量,例如将
$RetailDest改为不存在的盘符路径Z:\ToolUpload\Retail-EIP,脚本无法创建目标路径,执行移动操作时会触发路径不存在错误。 - 源文件丢失场景:先在源路径下放置符合规则的测试文件,脚本启动后枚举完文件、尚未执行移动操作的间隙,手动删除该源文件,移动时会触发找不到源文件的报错。
现有脚本错误捕获逻辑优化
原脚本catch块存在逻辑错误,会导致错误信息无法正常写入$out对象和日志:
# 原错误写法:管道会直接吞噬赋值结果,$out.Result为空 $out.Result = "Error: $($_.Exception.Message)" | Add-Content -Path $LogFile -Force
修改为拆分执行即可:
# 修正后写法 $out.Result = "Error: $($_.Exception.Message)" Add-Content -Path $LogFile -Value $out.Result -Force
修正后触发错误时,错误信息会同时写入CSV日志文件,并且发送报错通知邮件,测试时可直接查看D盘logs目录下的当日CSV日志验证捕获结果。
内容的提问来源于stack exchange,提问作者essex lake
相关产品推荐
相关产品推荐

