Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Info
titleUpdate 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
    Display feature availability
    StartingFromRelease1.10.5

Table of Contents
outlinh1. true
outlinh1. true
1printablefalse
2stylh1. none
3indent20px

PowerShell Scripting

PowerShell is the Scripting a scripting shell of the Windows world. A PowerShell script can be used in Jobs jobs as easy as other shell scripts.

An example:<job titlh1.

Code Block
 <job title="Execute a PowerShell Script"

...

Code Block

     order="yes"
     stop_on_error="no">
     <script language="shell">
        <><![CDATA[
 echo SCHEDULER_DATA = %SCHEDULER_DATA%

...


 echo SCHEDULER_PARAM_SCRIPT_FILENAME = %SCHEDULER_PARAM_SCRIPT_FILENAME%

...


 
 powershell.exe get-ExecutionPolicy

...


 powershell.exe -nologo -NonInteractive -noprofile -file "%SCHEDULER_PARAM_SCRIPT_FILENAME%" "%SCHEDULER_PARAM_SCRIPT_FILENAME%"

...


 exit %errorlevel%

...

Code Block
         ]]>
     </script>
     <monitor name="configuration_monitor"
              ordering="0">
         <script java_class="sos.scheduler.managed.configuration.ConfigurationOrderMonitor"
                 language="java"/>
     </monitor>
     <run_time/>
 </job>

This job is an order-driven job and therefore the parameter for this job comes from an order like that one below:

Code Block
 <order title="Executes the File PowerShell-Hallo.ps1">
     <params>
         <param name="Script_Filename"
                value="${SCHEDULER_DATA}\config\live\PowerShell\Powershell-Hallo.ps1"/>
     </params>
     <run_time let_run="no"/>
 </order>

Within the order the value of the parameter Script_Filename, which specify the name of the script to be executed, will be passed to the job as an environment variable.

The script, which is executed in the above example, is as much as simple:

Code Block
 $A="Hello, PowerShell ..."
 $A
 
 Write-Host "Num Args:" $args.Length;
 foreach ($arg in $args)
 {
   Write-Host "Arg: $arg";
 }
 
 Write-Host "Environment-var Scheduler-Data is : $env:SCHEDULER_DATA"
 Write-Host "Operating system is               : $env:OS"
 
 exit $lastexitcode
 
 # to change the policy for using powershell you can use this .adm file:
 #    http://www.microsoft.com/download/en/confirmation.aspx?id=25119

The output in the log-file looks like the text below:

Code Block
 C:\Program Files (x86)\scheduler>echo SCHEDULER_DATA = C:/Program Files (x86)/scheduler  
 SCHEDULER_DATA = C:/Program Files (x86)/scheduler 
  
 C:\Program Files (x86)\scheduler>echo SCHEDULER_PARAM_SCRIPT_FILENAME = C:/Program Files (x86)/scheduler\config\live\PowerShell\Powershell-Hallo.ps1  
 SCHEDULER_PARAM_SCRIPT_FILENAME = C:/Program Files (x86)/scheduler\config\live\PowerShell\Powershell-Hallo.ps1 
  
 C:\Program Files (x86)\scheduler>powershell get-ExecutionPolicy 
 SCHEDULER-918  state=release
 RemoteSigned 
  
 C:\Program Files (x86)\scheduler>powershell -noprofile \
 -file "C:/Program Files (x86)/scheduler\config\live\PowerShell\Powershell-Hallo.ps1" \
 "C:/Program Files (x86)/scheduler\config\live\PowerShell\Powershell-Hallo.ps1"  
 Hello, PowerShell ... 
 Num Args: 1
 Arg: C:/Program Files (x86)/scheduler\config\live\PowerShell\Powershell-Hallo.ps1
 Environment-var Scheduler-Data is : C:/Program Files (x86)/scheduler
 Operating system is               : Windows_NT
  
 C:\Program Files (x86)\scheduler>exit 0 

Related Downloads

See also

 /job>