custom/oldsdk/Add-CVVirtualMachineGroupContent.ps1
Add-AEnums function Add-CVVirtualMachineGroupContent { <# .SYNOPSIS Method to perform a virtual machine group content preview with option to create clients from result set. .DESCRIPTION Method to perform a virtual machine group content preview with option to create clients from result set. .PARAMETER SubclientObject Virtual machine group for content preview. Can be piped or passed as a parameter. .PARAMETER EntityType Virtual server EntityType including: Host, Datastore, VMName, VMNamePattern, GuestOS, GuestDNSHostname, PoweredState, Notes, TemplateState, Tag, and TagCategory. .PARAMETER PoweredState Paired with EntityType PoweredState: On, Off, Other. .PARAMETER TemplateState Paired with EntityType TemplateState: $True or $False. .PARAMETER MatchingPattern Matching pattern to be used for search on DisplayName can be: Contains, Equals, StartsWith, or EndsWith. .PARAMETER DisplayName Search Term. .PARAMETER VMName Paired with EntityType VMName, this is the VM GUID. .PARAMETER CreateClientsForDiscoveredVms Switch to create clients for discovered virtual machines. Recommend running first without this switch to preview discovery results. .PARAMETER Force Switch to Force override of default 'WhatIf' confirmation behavior. .EXAMPLE Get-CVSubclient -Name GRS-VMGroup1 -ClientName accounting.mycompany.com | Add-CVVirtualMachineGroupContent -EntityType Datastore -MatchingPattern EndsWith -DisplayName DS1 .EXAMPLE Get-CVSubclient -Name GRS-VMGroup1 -ClientName finance.mycompany.com | Add-CVVirtualMachineGroupContent -EntityType Host -MatchingPattern Equals -DisplayName 123.44.66.77 .EXAMPLE Get-CVSubclient -Name GRS-VMGroup1 -ClientName sales.mycompany.com | Add-CVVirtualMachineGroupContent -EntityType VMNamePattern -MatchingPattern Contains -DisplayName GaryTest -CreateClientsForDiscoveredVms .EXAMPLE Get-CVSubclient -Name GRS-VMGroup1 -ClientName repos.mycompany.com | Add-CVVirtualMachineGroupContent -EntityType VMName -VMName 500bc16c-fb3f-17d6-5712-c00b4524d3d2 .OUTPUTS Outputs [PSCustomObject] containing virtual machine discovery result. .NOTES Author: Gary Stoops Company: Commvault #> [CmdletBinding(DefaultParameterSetName = 'ByObject', SupportsShouldProcess = $True, ConfirmImpact = 'High')] [OutputType([PSCustomObject])] param( [Parameter(Mandatory = $True, ParameterSetName = 'ByObject', ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] [ValidateNotNullorEmpty()] [System.Object] $SubclientObject, [Parameter(Mandatory = $True )] [ValidateNotNullorEmpty()] [CVVMGroupContentEntityType] $EntityType, [Parameter(Mandatory = $False )] [ValidateNotNullorEmpty()] [CVVSAPowerState] $PoweredState = [CVVSAPowerState]::On, [Parameter(Mandatory = $False )] [ValidateNotNullorEmpty()] [Boolean] $TemplateState = $True, [Parameter(Mandatory = $False )] [ValidateNotNullorEmpty()] [CVMatchingPattern] $MatchingPattern = [CVMatchingPattern]::Equals, [Parameter(Mandatory = $False )] [ValidateNotNullorEmpty()] [String] $DisplayName, [Parameter(Mandatory = $False, HelpMessage = 'This is the VM GUID')] [ValidateNotNullorEmpty()] [String] $VMName, [Switch] $CreateClientsForDiscoveredVms, [Switch] $Force ) begin { Write-Debug -Message "$($MyInvocation.MyCommand): begin" try { $sessionObj = Get-CVSessionDetail $MyInvocation.MyCommand.Name $endpointSave = $sessionObj.requestProps.endpoint $bodySave = $sessionObj.requestProps.body } catch { throw $_ } } process { Write-Debug -Message "$($MyInvocation.MyCommand): process" try { $sessionObj.requestProps.endpoint = $endpointSave $sessionObj.requestProps.body = $bodySave if ($CreateClientsForDiscoveredVms.IsPresent) { $sessionObj.requestProps.body = $sessionObj.requestProps.body -creplace ('{createClientsForDiscoveredVms}', 1) } else { $sessionObj.requestProps.body = $sessionObj.requestProps.body -creplace ('{createClientsForDiscoveredVms}', 0) } $sessionObj.requestProps.body = $sessionObj.requestProps.body -creplace ('{clientId}', $SubclientObject.clientId) $sessionObj.requestProps.body = $sessionObj.requestProps.body -creplace ('{instanceId}', $SubclientObject.instanceId) $sessionObj.requestProps.body = $sessionObj.requestProps.body -creplace ('{backupsetId}', $SubclientObject.backupsetId) $sessionObj.requestProps.body = $sessionObj.requestProps.body -creplace ('{subclientId}', $SubclientObject.subclientId) $sessionObj.requestProps.body = $sessionObj.requestProps.body -creplace ('{type}', $EntityType.value__) if ($EntityType -eq [CVVMGroupContentEntityType]::PoweredState) { $sessionObj.requestProps.body = $sessionObj.requestProps.body -creplace ('{name}', $EntityType) $sessionObj.requestProps.body = $sessionObj.requestProps.body -creplace ('{displayName}', $PoweredState) } elseif ($EntityType -eq [CVVMGroupContentEntityType]::TemplateState) { $sessionObj.requestProps.body = $sessionObj.requestProps.body -creplace ('{name}', $EntityType) $sessionObj.requestProps.body = $sessionObj.requestProps.body -creplace ('{displayName}', $TemplateState) } elseif ($EntityType -eq [CVVMGroupContentEntityType]::VMName) { $sessionObj.requestProps.body = $sessionObj.requestProps.body -creplace ('{name}', $VMName) $sessionObj.requestProps.body = $sessionObj.requestProps.body -creplace ('{displayName}', $DisplayName) } else { if ($MatchingPattern -eq [CVMatchingPattern]::Equals) { $sessionObj.requestProps.body = $sessionObj.requestProps.body -creplace ('{displayName}', $DisplayName) } elseif ($MatchingPattern -eq [CVMatchingPattern]::Contains) { $sessionObj.requestProps.body = $sessionObj.requestProps.body -creplace ('{displayName}', "*$DisplayName*") } elseif ($MatchingPattern -eq [CVMatchingPattern]::StartsWith) { $sessionObj.requestProps.body = $sessionObj.requestProps.body -creplace ('{displayName}', "$DisplayName*") } elseif ($MatchingPattern -eq [CVMatchingPattern]::EndsWith) { $sessionObj.requestProps.body = $sessionObj.requestProps.body -creplace ('{displayName}', "*$DisplayName") } } $sessionObj.requestProps.body = $sessionObj.requestProps.body -creplace ('{name}', $null) $sessionObj.requestProps.body = $sessionObj.requestProps.body -creplace ('{displayName}', $null) $headerObj = Get-CVRESTHeader $sessionObj $payload = @{ } $payload.Add('headerObject', $headerObj) $payload.Add('body', $sessionObj.requestProps.body) $validate = 'jobid' if ($Force -or $PSCmdlet.ShouldProcess($SubclientObject.subclientName)) { $response = Submit-CVRESTRequest $payload $validate } else { $response = Submit-CVRESTRequest $payload $validate -DryRun } Write-Output $response.Content } catch { throw $_ } } end { Write-Debug -Message "$($MyInvocation.MyCommand): end" } } |