Update Information
- This article is deprecated and applies to JobScheduler releases up to 1.9
- Starting from JobScheduler Release 1.10.5 native support for PowerShell is available
- For detailed information see PowerShell Jobs
FEATURE AVAILABILITY STARTING FROM RELEASE 1.10.5
Scope
- You can use the JobScheduler PowerShell Adapter to create jobs or pre-processing and post-processing Monitors that use the JobScheduler API in PowerShell.
- This feature is provided by
- Future releases will use a new interface that is available with
Requirements
- Windows Machine with a JobScheduler installation
- .Net Framework 4
- PowerShell 2 or newer
Installation
- Download the JobScheduler PowerShell Adapter from http://www.sos-berlin.com/download/scheduler/JobSchedulerPowershellAdapter.zip
- Unzip the file to the
bin
directory of your JobScheduler installation Register the assembly by running
Registration for Windows 32 bit operating systemsC:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe "[install_path]\bin\JobSchedulerPowershellAdapter.dll" /codebase
Registration for Windows 64 bit operating systemsC:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe "[install_path]\bin\JobSchedulerPowershellAdapter.dll" /codebase
Usage
- The PowerShell Adapter uses the JobScheduler COM interface.
- Currently, neither COM jobs nor PowerShell jobs are supported by JOE. So, PowerShell jobs need to be configured by manually editing XML files.
Configuring a PowerShell job
- Have the
<script>
use thecom_class JSPowershellAdapter.JobAdapter
- define a parameter
powershell_script
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 implementation that at least implements
Function spooler_process()
Example job definition
<?xml 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>
Example PowerShell job script
Configuring a PowerShell pre-/post-processing Monitor
Only one Powershell pre-/post-processing Monitor can be configured per job.
- Have the
<monitor><script/></monitor>
use thecom_class JSPowershellAdapter.JobAdapter
- define a parameter
powershell_monitor_script
that points to the location of the PowerShell pre-/post-processing Monitor implementation- If the path is relative, it needs to be relative to the SCHEDULER_DATA directory
- write a PowerShell pre-/post-processing Monitor implementation
Example job definition
<?xml version="1.0" 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
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()") }
References
Change Management References