Quantcast
Channel: Virtual Machine Manager – General forum
Viewing all articles
Browse latest Browse all 2770

JobVariable - How to set static-dynamic value for this varible

$
0
0

Trying to create an automated Checkpoint script to create checkpoints of all running VMs before Patching.

It would be great if I could loop through all VMs and create a background variable that could be watched via another process.

In the code below (will be placed in a function), I would like "-JobVariable RemoveCP" to be "-JobVariable Remove-$vmName"

That way it can delete the previous months checkpoints on all running VMs at the same time. Is that possible using -JobVariable or should I be looking at using Start-Job instead, or something else entirely?

$vmName="Server-02"
$checkpointName = "BeforeUpdate"

# Create ARRAY of all Checkpoints for $vmName
$Checkpoints = Get-VMCheckpoint -VM "$vmName"

# Show how many Checkpoints EXIST
write-host Number in Array: $Checkpoints.Count

If ($Checkpoints.Count -ge 1)
# Check IF 1 or more Checkpoints EXIST
    {
      foreach($element in $Checkpoints)
      # LOOP through each Checkpoint in ARRAY $Checkpoints
        {
          # Identify each positional element in the ARRAY
          $elementNumber = $Checkpoints.IndexOf($element)

          if ($Checkpoints[$elementNumber] -match ($checkpointName))
          # CHECK if any Checkpoint MATCHES $checkpointName
            {

              # Show ARRAY element NUMBER and Checkpoint Name
              write-host $elementNumber $element

              # Remove checkpoint in ARRAY MATCHING $checkpointName
             Remove-VMCheckpoint -VMCheckpoint $Checkpoints[$elementNumber] -RunAsynchronously -JobVariable "RemoveCP"
#             Remove-VMCheckpoint -VMCheckpoint $Checkpoints[$elementNumber]

# Display job progress - this is just for testing
While ($RemoveCP.status -eq "Running") 
{ 
   Write-Progress -activity "Removing Checkpoint" -status $RemoveCP.progress
   Start-Sleep -seconds 2 
}

            } Else {
              # ERROR: CONTINUE: Current Checkpoint does NOT MATCH $checkpointName for $vmName
                # That's OK. Move on to the next Checkpoint Element Number for $vmName

              # DO NOTHING HERE

            }
        }
    } Else {
      # ERROR: CONTINUE: No Checkpoints for $vmName
        # This must be a NEW VM with no checkpoints OR someone removed it
        # Either way, that's OK. Move on the the next $vmName

        write-host No Checkpoints for $vmName

    }


Thanks.

Dan


Viewing all articles
Browse latest Browse all 2770

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>