Versions Compared

Key

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

...

Code Block
languagepowershell
titleDaily Plan Report (Windows version)
linenumberstrue
collapsetrue
<?xml version="1.0" encoding="ISOUTF-8859-18" ?>
<job title="Report Daily Plan" process_class="agent_windows">
  <script language="powershell"><![CDATA[
Import-Module $env:SCHEDULER_DATA/config/powershell/Modules/ImportExcel
Import-Module $env:SCHEDULER_DATA/config/powershell/Modules/JobScheduler

Connect-JS -Url $JOCCockpitUrl -Credential $JOCCockpitCredential | Out-Null

# start mode mapping
$startModes = @{"0"="single start"; "1"="repeat start-start"; "2"="repeat end-start"}

# Dates in local time zone, output includes local date format
Get-JSDailyPlan -Timezone (Get-Timezone) `
                |  Select-Object -Property @{name="Job Chain/Job"; expression={ "$($_.jobChain)$($_.job)"}}, `
                                           @{name="Order ID"; expression={$_.orderId}}, `
                                           @{name="Status"; expression={$_.state._text}}, `
                                           @{name="Job Stream"; expression={$_.jobStream}}, `
                                           @{name="Late"; expression={$_.late}}, `
                                           @{name="Start Type"; expression={ $startModes[ "$($_.startMode)"] }}, `
                                           @{name="Repeat Interval"; expression={$_.period.repeat}}, `
                                           @{name="Planned Start Time"; expression={ Get-Date $_.plannedStartTime }}, `
                                           @{name="Expected End Time"; expression={ Get-Date $_.expectedEndTime }}, `
                                           @{name="Expected Duration (sec.)"; expression={ (New-Timespan -Start "$($_.plannedStartTime)" -End "$($_.expectedEndTime)").Seconds }}, `
                                           @{name="Start Time"; expression={ Get-Date $_.startTime }}, `
                                           @{name="End Time"; expression={ Get-Date $_.endTime }}, `
                                           @{name="Duration (sec.)"; expression={ (New-Timespan -Start "$($_.startTime)" -End "$($_.endTime)").Seconds }} `
                | Export-Excel -Path /tmp/jobscheduler_reporting.xlsx -WorksheetName "Daily-Plan" -ClearSheet
				
Write-Output ".. report created: /tmp/jobscheduler_reporting.xls"
]]></script>
  <run_time/>
</job>

...

Code Block
languagepowershell
titleDaily Plan Report (Linux version)
linenumberstrue
collapsetrue
<?xml version="1.0" encoding="ISOUTF-8859-18" ?>
<job title="Report Daily Plan" process_class="agent_linux">
  <script language="shell"><![CDATA[
pwsh -NoLogo -NonInteractive -Command '& {
    . $env:SCHEDULER_DATA/config/powershell/JobScheduler.PowerShell_profile.ps1;
	Import-Module $env:SCHEDULER_DATA/config/powershell/Modules/ImportExcel;
	Import-Module $env:SCHEDULER_DATA/config/powershell/Modules/JobScheduler;

	Connect-JS -Url $JOCCockpitUrl -Credential $JOCCockpitCredential | Out-Null;

	# start mode mapping
	$startModes = @{"0"="single start"; "1"="repeat start-start"; "2"="repeat end-start"};

	# Dates in local time zone, output includes local date format
	Get-JSDailyPlan -Timezone (Get-Timezone) `
                |  Select-Object -Property @{name="Job Chain/Job"; expression={ "$($_.jobChain)$($_.job)"}}, `
                                           @{name="Order ID"; expression={$_.orderId}}, `
                                           @{name="Status"; expression={$_.state._text}}, `
                                           @{name="Job Stream"; expression={$_.jobStream}}, `
                                           @{name="Late"; expression={$_.late}}, `
                                           @{name="Start Type"; expression={ $startModes[ "$($_.startMode)"] }}, `
                                           @{name="Repeat Interval"; expression={$_.period.repeat}}, `
                                           @{name="Planned Start Time"; expression={ Get-Date $_.plannedStartTime }}, `
                                           @{name="Expected End Time"; expression={ Get-Date $_.expectedEndTime }}, `
                                           @{name="Expected Duration (sec.)"; expression={ (New-Timespan -Start "$($_.plannedStartTime)" -End "$($_.expectedEndTime)").Seconds }}, `
                                           @{name="Start Time"; expression={ Get-Date $_.startTime }}, `
                                           @{name="End Time"; expression={ Get-Date $_.endTime }}, `
                                           @{name="Duration (sec.)"; expression={ (New-Timespan -Start "$($_.startTime)" -End "$($_.endTime)").Seconds }} `
                | Export-Excel -Path /tmp/jobscheduler_reporting.xlsx -WorksheetName "Daily-Plan" -ClearSheet;

    Write-Output ".. report created: /tmp/jobscheduler_reporting.xls";
}'
]]></script>
  <run_time/>
</job>

ExplantionsExplanations

  • Basically the same explanations as for the Windows version of the job apply.
  • Line 3: The PowerShell has to be invoked with pwsh. Consider that any subsequent PowerShell commands are quoted within a string that starts with line 3 and that ends with line 29. 
    • As the string is using a single quote all subsequent PowerShell commands make use of double quotes when required.
    • You could apply a different quoting style, however, quotes have to be consistent.
  • Line 4: As an example a PowerShell profile is invoked that provides the variables for URL and credentials to access the JOC Cockpit REST Web Service. Such profiles can be stored in different locations and can be invoked automatically by pwsh on startup.

...