Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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 
    Jira
    serverSOS JIRA
    columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
    serverId6dc67751-9d67-34cd-985b-194a8cdc9602
    keyJS-1329
     and 
    Jira
    serverSOS JIRA
    columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
    serverId6dc67751-9d67-34cd-985b-194a8cdc9602
    keyJS-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 handling
    • This simple example prevents errors from being raised from for non-accessible network shares:

      Code Block
      languagepowershell
      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.

...