Public/Get-RubrikMount.ps1
#Requires -Version 3 function Get-RubrikMount { <# .SYNOPSIS Connects to Rubrik and retrieves details on mounts for a VM .DESCRIPTION The Get-RubrikMount cmdlet will accept a VM id and return details on any mount operations that are active within Rubrik Due to the nature of names not being unique Note that this function requires the VM ID value, not the name of the virtual machine, since virtual machine names are not unique. It is suggested that you first use Get-RubrikVM to narrow down the one or more virtual machines you wish to query, and then pipe the results to Get-RubrikMount. .NOTES Written by Chris Wahl for community usage Twitter: @ChrisWahl GitHub: chriswahl .LINK https://rubrik.gitbook.io/rubrik-sdk-for-powershell/command-documentation/reference/get-rubrikmount .EXAMPLE Get-RubrikMount This will return details on all mounted virtual machines. .EXAMPLE Get-RubrikMount -DetailedObject This will retrieve all mounted virtual machines with additional details .EXAMPLE Get-RubrikMount -id '11111111-2222-3333-4444-555555555555' This will return details on mount id "11111111-2222-3333-4444-555555555555". .EXAMPLE Get-RubrikMount -VMID (Get-RubrikVM -VM 'Server1').id This will return details for any mounts found using the id value from a virtual machine named "Server1" as a base reference. .EXAMPLE Get-RubrikMount -VMID 'VirtualMachine:::aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee-vm-12345' This will return details for any mounts found using the virtual machine id of 'VirtualMachine:::aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee-vm-12345' as a base reference. #> [CmdletBinding()] Param( # Rubrik's id of the mount [Parameter(ValueFromPipelineByPropertyName = $true)] [String]$id, # Filters live mounts by VM ID [Alias('vm_id')] [String]$VMID, # DetailedObject will retrieved the detailed VM Mount object, the default behavior of the API is to only retrieve a subset of the full VM Mount object unless we query directly by ID. Using this parameter does affect performance as more data will be retrieved and more API-queries will be performed. [Switch]$DetailedObject, # Rubrik server IP or FQDN [String]$Server = $global:RubrikConnection.server, # API version [ValidateNotNullorEmpty()] [String]$api = $global:RubrikConnection.api ) Begin { # The Begin section is used to perform one-time loads of data necessary to carry out the function's purpose # If a command needs to be run with each iteration or pipeline input, place it in the Process section # Check to ensure that a session to the Rubrik cluster exists and load the needed header data for authentication Test-RubrikConnection # API data references the name of the function # For convenience, that name is saved here to $function $function = $MyInvocation.MyCommand.Name # Retrieve all of the URI, method, body, query, result, filter, and success details for the API endpoint Write-Verbose -Message "Gather API Data for $function" $resources = Get-RubrikAPIData -endpoint $function Write-Verbose -Message "Load API data for $($resources.Function)" Write-Verbose -Message "Description: $($resources.Description)" } Process { $uri = New-URIString -server $Server -endpoint ($resources.URI) -id $id $uri = Test-QueryParam -querykeys ($resources.Query.Keys) -parameters ((Get-Command $function).Parameters.Values) -uri $uri $body = New-BodyString -bodykeys ($resources.Body.Keys) -parameters ((Get-Command $function).Parameters.Values) $result = Submit-Request -uri $uri -header $Header -method $($resources.Method) -body $body $result = Test-ReturnFormat -api $api -result $result -location $resources.Result $result = Test-FilterObject -filter ($resources.Filter) -result $result if (($DetailedObject) -and (-not $PSBoundParameters.containskey('id'))) { for ($i = 0; $i -lt @($result).Count; $i++) { $Percentage = [int]($i/@($result).count*100) Write-Progress -Activity "DetailedObject queries in Progress, $($i+1) out of $(@($result).count)" -Status "$Percentage% Complete:" -PercentComplete $Percentage if ($result) { Get-RubrikMount -id $result[$i].id } } } else { $result = Set-ObjectTypeName -TypeName $resources.ObjectTName -result $result return $result } } # End of process } # End of function |