I have a simple powershell script that gets ran daily to compress and move some log files. How can i test that the command completes successfully before deleting the original log file.
set-location $logpath1
& $arcprg $pram $dest_file $source_file
Move-Item $dest_file $arcdir
If the Move-Item completes ok i want to remove-item $source_file
The completion status of the previous command can be accessed via the special variable
$?.Note that this works best with non-terminating errors (like you would get from Move-Item). Terminating errors are the result of a direct
throwor an exception getting thrown in .NET and they alter the flow of your code. Best to use atraportry/catchstatement to observe those type of errors.One other thing to watch out for WRT
$?and console exes is that PowerShell assumes an exit code of 0 means success (i.e.$?is set to$true) and anything else means failure ($?set to$false). Unfortunately not all console exe’s observe that exit code convention e.g. there may be multiple success codes and a single failure code (0). For those exes that don’t follow the exit code rules, use$LastExitCodeas pointed out in the comments to determine success or failure.