...
You can use the JobScheduler PowerShell Adapter to create jobs or pre-processors processing and post-processors processing Monitors that use the JobScheduler API in PowerShell.
...
- The PowerShell Adapter uses the JobScheduler COM interface.
- Currently, neither COM Jobs jobs nor PowerShell Jobs jobs are supported by JOE. So, PowerShell Jobs jobs need to be configured by manually editing XML files.
...
- Have the
<script>
use thecom_class JSPowershellAdapter.JobAdapter
- define a parameter
powershell_script
which that points to the location of the PowerShell job implementation- If the path is relative, it needs to be relative to the SCHEDULER_DATA directory
- write a PowerShell Job job implementation which that at least implements
Function spooler_process()
...
Code Block | ||
---|---|---|
| ||
<?xml versioh1. version="1.0" encoding="ISO-8859-1"?> <job> <params> <param name = "test" value = "12345"/> <param name = "powershell_script" value = "powershell\powershell_job.ps1"/> </params> <script com_class = "JSPowershellAdapter.JobAdapter"/> <run_time once = "no"/> </job> |
...
Code Block | ||||
---|---|---|---|---|
| ||||
Function spooler_init() { if ($spooler_log) { $spooler_log.info("This is spooler_init()") $spooler_log.info("TaskID: "+ $spooler_task.id) } return $true } Function spooler_open() { $spooler_log.info("This is spooler_open()") return $true; } Function spooler_process() { $taskId = $spooler_task.id $spooler_log.info("This is spooler_process, in task id " + $taskId) $order = $spooler_task.order if ($order) { $orderId = $order.id $spooler_log.info("processing order " + $orderId) return $true } return $false; } Function spooler_close() { $spooler_log.info("This is spooler_close()") } Function spooler_exit() { $spooler_log.info("This is spooler_exit()") } Function spooler_on_success() { $spooler_log.info("This is spooler_on_success()") } Function spooler_on_error() { $spooler_log.info("This is spooler_on_error()") } |
Configuring a PowerShell pre-/post-
...
processing Monitor
Only one Powershell pre-/post-processor processing Monitor can be configured per job.
- Have the
<monitor><script/></monitor>
use thecom_class JSPowershellAdapter.JobAdapter
- define a parameter
powershell_monitor_script
which that points to the location of the PowerShell pre-/post-processor processing Monitor implementation- If the path is relative, it needs to be relative to the SCHEDULER_DATA directory
- write a PowerShell pre-/post-processor processing Monitor implementation
Example job definition
Code Block | ||
---|---|---|
| ||
<?xml version="1.0" encodinh1. encoding="ISO-8859-1"?> <job> <params> <param name="powershell_monitor_script" value="powershell\powershell_monitor.ps1"/> </params> <script language="javascript"> <![CDATA[ function spooler_process(){ spooler_log.info("this is javascript"); return false; } ]]> </script> <monitor> <script com_class="JSPowershellAdapter.JobAdapter"/> </monitor> </job> |
Example PowerShell pre-/post-
...
processing script
Code Block | ||
---|---|---|
| ||
Function spooler_task_before() { $spooler_log.info("powershell: This is spooler_task_before()") return $true } Function spooler_process_before() { $spooler_log.info("powershell: This is spooler_process_before()") return $true } Function spooler_process_after(bool $spooler_process_result) { $spooler_log.info("powershell: This is spooler_process_after with result $spooler_process_result()") return $spooler_process_result } Function spooler_task_after() { $spooler_log.info("powershell: This is spooler_task_after()") } |