PowerShell

<< Click to Display Table of Contents >>

Navigation:  Using VisualCron > Interacting with VisualCron > VisualCron API >

PowerShell

PowerShell

 

Some of our users have started to use PowerShell to interact with VisualCron. Below are some basic code snippets:

 

Snippet #1

 

# Load the VisualCron API Dlls

$VC                = [Reflection.Assembly]::LoadFrom("C:\Program Files (x86)\VisualCron\VisualCron.dll");

$VCAPI        = [Reflection.Assembly]::LoadFrom("C:\Program Files (x86)\VisualCron\VisualCronAPI.dll");

 

# Define Client & Server Objects

# Globals to allow sharing of connections

$Global:Client        = New-Object -TypeName VisualCronAPI.Client

$Global:Server        = New-Object -TypeName VisualCronAPI.Server

 

# Read Only VisualCron User for API Access

# VisualCron UserName and Password from your Site

$Conn_UserName                        =        'username'

$Conn_PassWord                        =        'password'

$Conn_Address                        =        'localhost'

 

# Standard Settings

$Conn_Port                                =        16444

$Conn_ConnectionType        =        'Remote'

 

# Function to Connect to a VisualCron Server using the API

function VCAPI-ConnectServer ([string]$Conn_Address) {

 

# Define Connection Object

$Conn = New-Object -TypeName VisualCronAPI.Connection

 

# Set Connection Values

$Conn.Address                        =        $Conn_Address

$Conn.UserName                =        $Conn_UserName

$Conn.PassWord                        =        $Conn_PassWord

$Conn.Port                                =        $Conn_Port

$Conn.ConnectionType        =        $Conn_ConnectionType

 

# Try to Connect to the VisualCron Server

try

 {

         $Global:Server = $Client.Connect($conn, $true);

 

 }

catch [$ClientLoginFailedException ex]

 {

  MessageBox.Show(ex.Message);

 

 }

 

}

 

# Function to retrieve a User Variable Value using the API

# wrapper for generic get variable API call below

function VCAPI-Get-User-Variable ([string]$Variable_Name) {

 

$Variable_Value = VCAPI-Get-Variable("USERVAR(" + $Variable_Name + ")")

 

Return $Variable_Value

 

}

 

# wrapper for the get-variable API call

# Returns Varian;e Value

function VCAPI-Get-Variable ([string]$Variable_Name) {

 

$Variable_Name        = "{" + $Variable_Name + "}"

 

$Variable_Value = $Global:Server.Variables.GetGenericVariable($Variable_Name)

 

Return $Variable_Value

}

 

 

Snippet #2

 

# Determine Script Path

$Path = Split-Path $MyInvocation.MyCommand.Path

 

# Determine Script Drive

$Drive = (Get-Item $Path).Root.Name

 

Remove-Variable -Force HOME

Set-Variable HOME $Path

 

# include the VisualCron API

. "$HOME\VisualCron_API.ps1"

 

# API Information - Example - Direct API Call

$OSVersion = [VisualCronAPI.ComputerInfoAPI]::GetOSVersion()

Write-Host '$OSVersion : ' $OSVersion

 

# API Information - Example - Direct API Call

$LocalAdmins = [VisualCronAPI.ComputerInfoAPI]::GetLocalAdministrators()

Write-Host '$LocalAdmins : ' $LocalAdmins

 

# Set Client Values - Example using $Client Object

$Client.LogToFile = $False

 

################################################################################

# Server Connection and API Calls

#

################################################################################

 

# Connect using Server Name (Fully Qualified)

#VCAPI-ConnectServer('washington.somewhere.com.au')

# or

# IP Address

VCAPI-ConnectServer("123.145.167.89")

 

# Various Variable Calls - Replace First 2 With UserVariable Names from Your Site

$VCUserVariable = VCAPI-Get-User-Variable("SERVER01")

Write-Host '$VCUserVariable : ' $VCUserVariable

 

$VCServerName = VCAPI-Get-Variable("USERVAR(SERVER02)")

Write-Host '$VCServerName : ' $VCServerName

 

$VCServerIP = VCAPI-Get-Variable("SERVER(IP)")

Write-Host '$VCServerIP : ' $VCServerIP

 

$VCServerPort = VCAPI-Get-Variable("SERVER(Port)")

Write-Host '$VCServerPort : ' $VCServerPort

 

 

Snippet #3

 

https://gist.github.com/atifaziz/9400489