The JAMS PowerShell Provider

Introduction to Windows PowerShell Providers

A Windows PowerShell provider is a .NET program that allows any data store to be viewed as if it were a mounted drive. The data, which appears in a temporary drive for the session, can be managed with built-in or custom cmdlets.

A provider can also override the "Item" cmdlets (for example, “Get-Item”or “Set-Item”) in ways that allow the data store data to be treated like typical files and directories in a file system.

Each Windows PowerShell provider exposes a drive called a PSDrive. The PSDrive is then used to display the data that is exposed via the Windows PowerShell provider. So, by default, you can gain access to the Alias, Environment, FileSystem, Function, Registry, and Variable providers.

NOTE: The PowerShell cmdlets listed below cannot be used with PowerShell Core.

Using PowerShell Providers with JAMS

You can use the PowerShell and the JAMS PowerShell provider drive capabilities to synchronize Jobs and Sequences, between JAMS Servers. A JAMS PowerShell provider drive allows you to access the JAMS SQL Database backend as if it were a flat file system.

To add a new PowerShell drive, open a PowerShell window (running as an Administrator), and type the following information at the PowerShell prompt:

Adding a PowerShell Drive

Copy
New-PSDrive MyDrv JAMS your.server.name

Where "MyDrv" is your specification for the new "drive letter/phrase" and "your.server.name" is the name of the server where you want to create the temporary drive.

Once you have a drive added for the servers, you can change the directory to that drive and run a simple "dir" commands to drill down through the file structure of each server. For example, if you wish to view all Jobs on a server, enter the following:

Viewing all Job on a Server

Copy
PS C:\temp> cd JD:\ PS JD:> cd Folder/Samples/

This will go into the Systems directory, then into the Samples System, and finally into the Jobs directory for that System. You can then perform all of the same commands as you would on any flat file system to copy or move any portion of JAMS information from one server to another or to a different name on the same server.

For additional ways to work with the provider, review the examples below.

Example: Copying a Job between Servers

Copying a Job between Servers

Copy
Import-Module JAMS
#
# Create a new JAMS Drive for two JAMS servers
#
New-PSDrive -Name JD -PSProvider JAMS -Root localhost
New-PSDrive -Name JDServerB -PSProvider JAMS -Root ServerB

# Move into the Samples Folder
Set-Location JD:\Samples\
#
# Copy the Sleep Job to another JAMS server
#
Copy-Item -Path JD:\Samples\SleepJob -Destination JDServerB:\Test\ -Verbose

Example: Creating a Variable

Creating a Variable

Copy
Import-Module JAMS
#
# Create a new JAMS Drive for the local primary engine
#
New-PSDrive -Name JD -PSProvider JAMS -Root localhost
# Move into the Samples Folder
Set-Location JD:\Samples\
#
# Create a new Variable in the Samples Folder
#
$newVar = New-Item -ItemType Variable -Name DBName
$newVar.Description = "The name of the test database."
$newVar.DataType = [MVPSI.JAMS.DataType]::Text
$newVar.Value = "BusinessTestingDB";
$newVar.Update();

Example: Updating Job Properties

Updating Job Properties

Copy
Import-Module JAMS
#
# Create a new JAMS Drive for the local primary engine
#
New-PSDrive -Name JD -PSProvider JAMS -Root localhost

# Move into the Samples Folder

Set-Location JD:\Samples\

# Get the SleepJob

$job = Get-ChildItem *SleepJob*
 
if($job)

  {
    #
    # Update properties on the Job
    #
    $job.JobName = "Sleep500"

    $job.Source = "Start-Sleep 500"

    $job.Description = "Sleeps for 500 seconds";

    $job.Update();

  }