...
PowerShell jobs offer a number of options to detect run-time errors:.
Checking the last exit code of a Windows program or script
- If a native Windows program or script (.bat, .cmd) causes an error then this will assign the exit code to the
$LastExitCode
global variable. This behavior does not apply to cmdlets causing errors. - JobScheduler checks this variable an and will set the job exit code accordingly. For exit codes != 0 an error is raised.
- This behavior is superior compared to shell jobs as errors from any line in the job script are detected. For shell scripts only the last line of a job script determines the execution result (Unix:
$?
, Windows:%errorlevel%
).
...
- Native Windows programs or scripts and cmdlets can cause errors that create some error output (stderr).
- PowreShell PowerShell jobs can be configured to handle any output found in stderr to indicate an error. Not all output to stderr may indicate an error as a number of Windows native programs is reported to write to stderr instead of stdout. Therefore uses users can choose from the following configuration:
<job stderr_log_level="error"/>
- Indicates that any output found in stderr will result in a job error.
<job stderr_log_level="info"/>
- Indicates that output to stderr is logged but will not result in a job error (default).
- For details check
andJira server SOS JIRA columns key,summary,type,created,updated,due,assignee,reporter,priority,status,resolution serverId 6dc67751-9d67-34cd-985b-194a8cdc9602 key JS-1329 Jira server SOS JIRA columns key,summary,type,created,updated,due,assignee,reporter,priority,status,resolution serverId 6dc67751-9d67-34cd-985b-194a8cdc9602 key JS-1393
Suppressing Exit Codes
- Users who which wish to suppress exit codes of failed executions of native Windows programs or script scripts can setuse
$LastExitCode = $null
- This will disable the above mentioned check of the last exit code.
Catching errors
- Users can use simple
try/catch
blocks to implement individual error handlingThis simple example prevents errors from being raised from for non-accessible network shares:
Code Block language powershell try { $found = Test-Path \\some_share\some_directory\some_file -PathType Leaf } catch { $found = $false }
- From the above sample example an exception is raised and handled that does not create result in a job error. In addition no output to stderr is created that would be detected by the above mentioned error output checking.
...