Scripting examples > Job information scripts > Viewing job information

Viewing job information

The following sample script will gather and view job information, including the job ID, the job status, the high and low level options the job is using, and the job statistics. The low-level options gathered and displayed by this script are for a full server job. You will need to modify this script to fit your environment and configuration.

Be sure and expand your screen wide enough so that lines in the script file do not wrap.

 

# Sample script to gather and view all Double-Take job information

 

# Specify the variables to be used in the script

 

     # Target server and credentials

     $DtTargetName = "beta"

     $DtTargetUserName = "domain\administrator"

     $DtTargetPassword = "password"

 

     # Separator variables

     $MiniDivide = "-------------"

     $SmallDivide = "-------------------------------------------------------------------------------"

     $LargeDivide = "==============================================================================="

 

# Import the Double-Take PowerShell module

# This may be \Service\ or \Console\ depending on your installation

Import-Module "C:\Program Files\Vision Solutions\Double-Take\Console\DoubleTake.PowerShell.dll"

 

# Create target object

$DtTarget = New-DtServer -Name $DtTargetName -UserName $DtTargetUserName -Password $DtTargetPassword

 

# Get the jobs on the target server

Write-output ""

Write-output $("Checking server " + $DtTargetName + " for jobs...")

Write-output ""

$JobList = @()

$JobList += Get-DtJob -ServiceHost $DtTarget

 

Function DisplayJobValue($Name, $Value)

     {

          $DisplayValue = "None"

          if ($Value)

          {

               $DisplayValue = $Value

          }

          write-output $Name $MiniDivide $DisplayValue " "

     }

 

Function DisplayJobInfo($Job)

     {

          # Display job ID

          write-output ("Job ID: " + $Job.Id)

 

          # Display job type

          write-output ("JobType: " + $Job.JobType) " "

 

          # Display job status

          write-output "Job status" $SmallDivide $Job.status

 

          # Display job options

          write-output "Job options" $SmallDivide $Job.options

 

          DisplayJobValue "ApplicationOptions" $Job.Options.ApplicationOptions

          if ($Job.Options.ApplicationOptions)

          {

               DisplayJobValue "ApplicationOptions.DnsRecordLocks" $Job.Options.ApplicationOptions.DnsRecordLocks

               DisplayJobValue "ApplicationOptions.ExchangeCredentials" $Job.Options.ApplicationOptions.ExchangeCredentials

               DisplayJobValue "ApplicationOptions.ServiceInformation" $Job.Options.ApplicationOptions.ServiceInformation

          }

          

          DisplayJobValue "BandwidthOptions" $Job.Options.BandwidthOptions

          DisplayJobValue "BandwidthOptions.Entries" $Job.Options.BandwidthOptions.Entries

          DisplayJobValue "BandwidthOptions.Specifications" $Job.Options.BandwidthOptions.Specifications

 

          DisplayJobValue "ClusterOptions" $Job.Options.ClusterOptions

 

          DisplayJobValue "CoreConnectionOptions" $Job.Options.CoreConnectionOptions

          DisplayJobValue "CoreConnectionOptions.ConnectionStartParameters" $Job.Options.CoreConnectionOptions.ConnectionStartParameters

          DisplayJobValue "CoreConnectionOptions.ConnectionStartParameters.CompressionLevel" $Job.Options.CoreConnectionOptions.ConnectionStartParameters.CompressionLevel

          DisplayJobValue "CoreConnectionOptions.ConnectionStartParameters.MirrorParameters" $Job.Options.CoreConnectionOptions.ConnectionStartParameters.MirrorParameters

          DisplayJobValue "CoreConnectionOptions.ConnectionStartParameters.Schedule" $Job.Options.CoreConnectionOptions.ConnectionStartParameters.Schedule

          DisplayJobValue "CoreConnectionOptions.ConnectionStartParameters.Schedule.Archive" $Job.Options.CoreConnectionOptions.ConnectionStartParameters.Schedule.Archive

          DisplayJobValue "CoreConnectionOptions.ConnectionStartParameters.Schedule.Archive.Criteria" $Job.Options.CoreConnectionOptions.ConnectionStartParameters.Schedule.Archive.Criteria

          DisplayJobValue "CoreConnectionOptions.ConnectionStartParameters.Schedule.Bandwidth" $Job.Options.CoreConnectionOptions.ConnectionStartParameters.Schedule.Bandwidth

          DisplayJobValue "CoreConnectionOptions.ConnectionStartParameters.Schedule.Bandwidth.Current" $Job.Options.CoreConnectionOptions.ConnectionStartParameters.Schedule.Bandwidth.Current

          DisplayJobValue "CoreConnectionOptions.ConnectionStartParameters.Schedule.Bandwidth.Entries" $Job.Options.CoreConnectionOptions.ConnectionStartParameters.Schedule.Bandwidth.Entries

          DisplayJobValue "CoreConnectionOptions.ConnectionStartParameters.Schedule.Bandwidth.Specifications" $Job.Options.CoreConnectionOptions.ConnectionStartParameters.Schedule.Bandwidth.Specifications

          DisplayJobValue "CoreConnectionOptions.ConnectionStartParameters.Schedule.Orphans" $Job.Options.CoreConnectionOptions.ConnectionStartParameters.Schedule.Orphans

          DisplayJobValue "CoreConnectionOptions.ConnectionStartParameters.Schedule.Verify" $Job.Options.CoreConnectionOptions.ConnectionStartParameters.Schedule.Verify

          DisplayJobValue "CoreConnectionOptions.ConnectionStartParameters.ScriptPoints" $Job.Options.CoreConnectionOptions.ConnectionStartParameters.ScriptPoints

          DisplayJobValue "CoreConnectionOptions.ConnectionStartParameters.SnapshotSchedule" $Job.Options.CoreConnectionOptions.ConnectionStartParameters.SnapshotSchedule

 

          DisplayJobValue "CoreMonitorOptions" $Job.Options.CoreMonitorOptions

          DisplayJobValue "CoreMonitorOptions.MonitorConfiguration" $Job.Options.CoreMonitorOptions.MonitorConfiguration

          DisplayJobValue "CoreMonitorOptions.MonitorConfiguration.ActiveDirectoryCredentials" $Job.Options.CoreMonitorOptions.MonitorConfiguration.ActiveDirectoryCredentials

          DisplayJobValue "CoreMonitorOptions.MonitorConfiguration.Addresses" $Job.Options.CoreMonitorOptions.MonitorConfiguration.Addresses

          DisplayJobValue "CoreMonitorOptions.MonitorConfiguration.Scripts" $Job.Options.CoreMonitorOptions.MonitorConfiguration.Scripts

          DisplayJobValue "DnsOptions" $Job.Options.DnsOptions

          if ($Job.Options.DnsOptions)

          {

               DisplayJobValue "DnsOptions.Domains" $Job.Options.DnsOptions.Domains

               DisplayJobValue "DnsOptions.Domains.Credentials" $Job.Options.DnsOptions.Domains.Credentials

               DisplayJobValue "DnsOptions.Domains.DnsServers" $Job.Options.DnsOptions.Domains.DnsServers

               DisplayJobValue "DnsOptions.Domains.IpAddressMappings" $Job.Options.DnsOptions.Domains.IpAddressMappings

               DisplayJobValue "DnsOptions.SourceCredentials" $Job.Options.DnsOptions.SourceCredentials

          }

          DisplayJobValue "DTHVOptions" $Job.Options.DTHVOptions

          if ($Job.Options.DTHVOptions)

          {

               DisplayJobValue "DTHVOptions.OriginalSourceVM" $Job.Options.DTHVOptions.OriginalSourceVM

               DisplayJobValue "DTHVOptions.ReplicaVMNetworkInterfaceInfo" $Job.Options.DTHVOptions.ReplicaVMNetworkInterfaceInfo

               DisplayJobValue "DTHVOptions.ReplicaVMNetworkInterfaceInfo.IPAddresses" $Job.Options.DTHVOptions.ReplicaVMNetworkInterfaceInfo.IPAddresses

               DisplayJobValue "DTHVOptions.ReverseVHDMappings" $Job.Options.DTHVOptions.ReverseVHDMappings

               DisplayJobValue "DTHVOptions.SelectedVirtualMachines" $Job.Options.DTHVOptions.SelectedVirtualMachines

               DisplayJobValue "DTHVOptions.SelectedVirtualMachines.Credentials" $Job.Options.DTHVOptions.SelectedVirtualMachines.Credentials

               DisplayJobValue "DTHVOptions.SelectedVirtualMachines.NetworkInterfaceInfo" $Job.Options.DTHVOptions.SelectedVirtualMachines.NetworkInterfaceInfo

               DisplayJobValue "DTHVOptions.SelectedVirtualMachines.IPAddresses" $Job.Options.DTHVOptions.SelectedVirtualMachines.NetworkInterfaceInfo.IPAddresses

               DisplayJobValue "DTHVOptions.SelectedVirtualMachines.Volumes" $Job.Options.DTHVOptions.SelectedVirtualMachines.Volumes

               DisplayJobValue "DTHVOptions.SourceOsVersion" $Job.Options.DTHVOptions.SourceOsVersion

               DisplayJobValue "DTHVOptions.SourceVM" $Job.Options.DTHVOptions.SourceVM

               DisplayJobValue "DTHVOptions.SourceVMNetworkInterfaceInfo" $Job.Options.DTHVOptions.SourceVMNetworkInterfaceInfo

               DisplayJobValue "DTHVOptions.SourceVMNetworkInterfaceInfo.IPAddresses" $Job.Options.DTHVOptions.SourceVMNetworkInterfaceInfo.IPAddresses

               DisplayJobValue "DTHVOptions.TargetOsVersion" $Job.Options.DTHVOptions.TargetOsVersion

               DisplayJobValue "DTHVOptions.TargetVM" $Job.Options.DTHVOptions.TargetVM

               DisplayJobValue "DTHVOptions.VirtualSwitchMapping" $Job.Options.DTHVOptions.VirtualSwitchMapping

               DisplayJobValue "DTHVOptions.VirtualSwitchMapping.SourceVirtualSwitch" $Job.Options.DTHVOptions.VirtualSwitchMapping.SourceVirtualSwitch

               DisplayJobValue "DTHVOptions.VirtualSwitchMapping.TargetVirtualSwitch" $Job.Options.DTHVOptions.VirtualSwitchMapping.TargetVirtualSwitch

               DisplayJobValue "DTHVOptions.VLanMapping" $Job.Options.DTHVOptions.VLanMapping

               DisplayJobValue "DTHVOptions.VLanMapping.SourceSwitchPort" $Job.Options.DTHVOptions.VLanMapping.SourceSwitchPort

               DisplayJobValue "DTHVOptions.VLanMapping.TargetSwitchPort" $Job.Options.DTHVOptions.VLanMapping.TargetSwitchPort

          }

 

          DisplayJobValue "FullServerFailoverOptions" $Job.Options.FullServerFailoverOptions

 

          DisplayJobValue "ImageProtectionOptions" $Job.Options.ImageProtectionOptions

          DisplayJobValue "ImageProtectionOptions.VhdInfo" $Job.Options.ImageProtectionOptions.VhdInfo

 

          DisplayJobValue "ImageRecoveryOptions" $Job.Options.ImageRecoveryOptions

 

          DisplayJobValue "MonitoringOptions" $Job.Options.MonitoringOptions

          if ($Job.Options.MonitoringOptions)

          {

               DisplayJobValue "MonitoringOptions.ServiceMonitoringOptions" $Job.Options.MonitoringOptions.ServiceMonitoringOptions

               DisplayJobValue "MonitoringOptions.ServiceMonitoringOptions.Services" $Job.Options.MonitoringOptions.ServiceMonitoringOptions.Services

          }

           

          DisplayJobValue "SimpleFailoverMonitorOptions" $Job.Options.SimpleFailoverMonitorOptions

           

          DisplayJobValue "SystemStateOptions" $Job.Options.SystemStateOptions

          DisplayJobValue "SystemStateOptions.NicMappings" $Job.Options.SystemStateOptions.NicMappings

          DisplayJobValue "SystemStateOptions.ServicesToStopOptions" $Job.Options.SystemStateOptions.ServicesToStopOptions

           

          DisplayJobValue "TargetServiceOptions" $Job.Options.TargetServiceOptions

          if ($Job.Options.TargetServiceOptions)

          {

               DisplayJobValue "TargetServiceOptions.FailoverServices" $Job.Options.TargetServiceOptions.FailoverServices

          }

 

          DisplayJobValue "UnmanagedConnectionOptions" $Job.Options.UnmanagedConnectionOptions

          if ($Job.Options.UnmanagedConnectionOptions)

          {

               DisplayJobValue "UnmanagedConnectionOptions.TargetStateInfo" $Job.Options.UnmanagedConnectionOptions.TargetStateInfo

               DisplayJobValue "UnmanagedConnectionOptions.TargetStateInfo.Snapshots" $Job.Options.UnmanagedConnectionOptions.TargetStateInfo.Snapshots

               DisplayJobValue "UnmanagedConnectionOptions.TargetStateInfo.SourceVersion" $Job.Options.UnmanagedConnectionOptions.TargetStateInfo.SourceVersion

          }

 

          DisplayJobValue "VRAOptions" $Job.Options.VRAOptions

          if ($Job.Options.VRAOptions)

          {

               DisplayJobValue "VRAOptions.LvmOptions" $Job.Options.VRAOptions.LvmOptions

               DisplayJobValue "VRAOptions.VolumeGroup.LogicalVolume" $Job.Options.VRAOptions.LvmOptions.VolumeGroup.LogicalVolume

               DisplayJobValue "VRAOptions.VolumeGroup.PhysicalVolume" $Job.Options.VRAOptions.LvmOptions.VolumeGroup.PhysicalVolume

               DisplayJobValue "VRAOptions.ReplicaApplianceInfo" $Job.Options.VRAOptions.ReplicaApplianceInfo

               DisplayJobValue "VRAOptions.ReplicaNetworkInterfaceInfo" $Job.Options.VRAOptions.ReplicaNetworkInterfaceInfo

               DisplayJobValue "VRAOptions.ReplicaNetworkInterfaceInfo.IPAddresses" $Job.Options.VRAOptions.ReplicaNetworkInterfaceInfo.IPAddresses

               DisplayJobValue "VRAOptions.ReplicaVmInfo" $Job.Options.VRAOptions.ReplicaVmInfo

               DisplayJobValue "VRAOptions.SourceApplianceInfo" $Job.Options.VRAOptions.SourceApplianceInfo

               DisplayJobValue "VRAOptions.SourceNetworkInterfaceInfo" $Job.Options.VRAOptions.SourceNetworkInterfaceInfo

               DisplayJobValue "VRAOptions.SourceNetworkInterfaceInfo.IPAddresses" $Job.Options.VRAOptions.SourceNetworkInterfaceInfo.IPAddresses

               DisplayJobValue "VRAOptions.SourceVmInfo" $Job.Options.VRAOptions.SourceVmInfo

               DisplayJobValue "VRAOptions.VirtualSwitchMapping" $Job.Options.VRAOptions.VirtualSwitchMapping

               DisplayJobValue "VRAOptions.VirtualSwitchMapping.SourceVirtualSwitch" $Job.Options.VRAOptions.VirtualSwitchMapping.SourceVirtualSwitch

               DisplayJobValue "VRAOptions.VirtualSwitchMapping.TargetVirtualSwitch" $Job.Options.VRAOptions.VirtualSwitchMapping.TargetVirtualSwitch

               DisplayJobValue "VRAOptions.Volumes" $Job.Options.VRAOptions.Volumes

               DisplayJobValue "VRAOptions.WorkloadCustomizationOptions" $Job.Options.VRAOptions.WorkloadCustomizationOptions

          }

 

          DisplayJobValue "Workload" $Job.Options.Workload

          DisplayJobValue "Workload.PhysicalRules" $Job.Options.Workload.PhysicalRules

 

          # Display statistics

          Write-Output "Statistics" $SmallDivide $Job.Statistics.CoreConnectionDetails " "

     }

 

$DateTime = Get-Date

 

if ($JobList.length -ge 2)

{

     Write-Output $("" + $JobList.length + " jobs were found on the target server as of " + $DateTime + ".")

     Write-Output " "

     $JobCounter = 0

     ForEach ($Job in $JobList)

     {

          $JobCounter++

          write-output $LargeDivide " "

          write-host -BackgroundColor yellow -NoNewline "Job" $JobCounter "of" $JobList.length

          write-host

          Write-Output " "

          DisplayJobInfo($Job)

          write-output $LargeDivide " "

     }

}

else

{

     if ($JobList)

     {

          Write-Output $("1 job was found on the target server as of " + $DateTime + ".")

          Write-Output " "

          ForEach ($Job in $JobList)

          {

               DisplayJobInfo($Job)

          }

     }

     else

     {

          Write-Output $("No jobs were found on the target server as of " + $DateTime + ".")

     }

}

 

# Close the connections for the server object

Disconnect-DtServer -ServiceHost $DtTarget

 

If you want to hide your user credentials in your script, use the Windows PowerShell Get-Credential cmdlet. The password will not be visible because Windows stores an encrypted password. See Hiding your password in a PowerShell script for basic details on using this cmdlet. See your Windows PowerShell documentation for detailed instructions.