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 a scripting is the Scripting shell of the Windows world. A PowerShell script can be used in Jobs jobs as easy as other shell scripts.

An example:

Code Block

 <job title="Execute a PowerShell Script"
      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%
         ]]>
     </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 parameters 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>

...

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

Code Block

 $A="Hello, PowerShell ..."
 $A
Code Block
 
 Write-Host "Num Args:" $args.Length;
 foreach ($arg in $args)
 \{
   Write-Host "Arg: $arg";
 \}
Code Block
 
 Write-Host "Environment-var Scheduler-Data is : $env:SCHEDULER_DATA"
 Write-Host "Operating system is               : $env:OS"
Code Block
 
 exit $lastexitcode
Code Block
 
 # 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 

see also:

...

Related Downloads

See also