...
Code Block |
---|
# Example Shell: echo name1 = value2 >> %SCHEDULER_RETURN_VALUES% # Example PowerShell: $spooler_task.order().params().set_value( "name1", "value2" ) |
Error Handling
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 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%
).
Checking error output
- Native Windows programs or scripts and cmdlets can cause errors that create some error output (stderr).
- PowreShell 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 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 to suppress exit codes of failed executions of native Windows programs or script can set
$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 handling
This simple example prevents errors being raised from 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 an exception is raised and handled that does not create a job error. In addition no output to stderr is created that would be detected by the above mentioned error output checking.
References
Reference Documentation
...