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.