Public/New-AGMVMMultiMount.ps1
# Copyright 2022 Google Inc. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. Function New-AGMLibVMMultiMount ([string]$filename) { <# .SYNOPSIS Uses a pre-prepared CSV list of VMware Backups to create new VMware VMs. This is very similar to New-AGMLibMultiVM but is simpler .EXAMPLE New-AGMVMMultiMount -filename recoverylist.cav This will load the contents of the file recoverylist.csv and use it to run multiple New-AGMLibVM jobs .DESCRIPTION This routine needs a well formatted CSV file. Here is an example of such a file: appid,vmname,datastore,vcenterid,esxhostid,mountmode,poweronvm,onvault,label 296433,centos2-rec,vsanDatastore,296400,296404,nfs,true,true,multimount 377723,ubuntu-rec,vsanDatastore,296400,296406,nfs,true,true,multimount 89091,windows-rec,vsanDatastore,296400,296408,nfs,true,true,multimount To get the ingredients for the CSV file, these three commands will let you gather what you need: To get the appid use this command: The VMname is the 'new' name, but clearly you might want it to be a child of the appname: Get-AGMApplication -filtervalue apptype=VMBackup | select id,appname,managed To get the vCenterID use this command: Get-AGMHost -filtervalue isvcenterhost=true | select id,name To get the esxhostid use this command. Consider using a round-robin distribution with the ESX hosts in the list: Get-AGMHost -filtervalue isesxhost=true | select id,name #> if ( (!($AGMSESSIONID)) -or (!($AGMIP)) ) { Get-AGMErrorMessage -messagetoprint "Not logged in or session expired. Please login using Connect-AGM" return } $sessiontest = Get-AGMVersion if ($sessiontest.errormessage) { Get-AGMErrorMessage -messagetoprint "AGM session has expired. Please login again using Connect-AGM" return } if (!($filename)) { Get-AGMErrorMessage -messagetoprint "Please supply a csv file correctly formatted as per the help for this function using: -filename xxxx.csv" return; } if ( Test-Path $filename ) { $recoverylist = Import-Csv -Path $filename } else { Get-AGMErrorMessage -messagetoprint "VM list: $filename could not be opened." return; } foreach ($app in $recoverylist) { $mountcommand = 'New-AGMLibVM -appid ' +$app.appid +' -vmname ' +$app.vmname +' -datastore ' +$app.datastore +' -vcenterid ' +$app.vcenterid +' -esxhostid ' +$app.esxhostid +' -mountmode ' +$app.mountmode if ($app.label) { $mountcommand = $mountcommand + ' -label "' +$app.Label +'"' } if ($app.poweronvm) { $mountcommand = $mountcommand + ' -poweronvm ' + $app.poweronvm } if ($app.onvault) { $mountcommand = $mountcommand + ' -onvault ' + $app.onvault } Invoke-Expression $mountcommand } } |