我有一个简单的PowerShell脚本,每天运行以压缩和移动一些日志文件.如何在删除原始日志文件之前测试命令是否成功完成.
set-location $logpath1
& $arcprg $pram $dest_file $source_file
Move-Item $dest_file $arcdir
Run Code Online (Sandbox Code Playgroud)
如果Move-Item完成,我想删除item $ source_file
Kei*_*ill 22
可以通过特殊变量访问上一个命令的完成状态$?.
请注意,这适用于非终止错误(就像您从Move-Item获得的那样).终止错误是throw在.NET中抛出直接或异常的结果,它们会改变代码流.最好使用trap或try/catch声明来观察那些类型的错误.
注意WRT $?和控制台exes的另一件事是PowerShell假定退出代码为0意味着成功(即$?设置为$true),其他任何意味着失败($?设置为$false).不幸的是,并非所有控制台exe都遵守退出代码约定,例如,可能存在多个成功代码和单个故障代码(0).对于那些不遵循退出代码规则的exes,请按照$LastExitCode注释中的指示使用以确定成功或失败.