Public/Get-RubrikVM.ps1
#requires -Version 3 function Get-RubrikVM { <# .SYNOPSIS Retrieves details on one or more virtual machines known to a Rubrik cluster .DESCRIPTION The Get-RubrikVM cmdlet is used to pull a detailed data set from a Rubrik cluster on any number of virtual machines .NOTES Written by Chris Wahl for community usage Twitter: @ChrisWahl GitHub: chriswahl .LINK https://github.com/rubrikinc/PowerShell-Module .EXAMPLE Get-RubrikVM -VM 'Server1' This will return the ID of the virtual machine named Server1 #> [CmdletBinding()] Param( [Parameter(Mandatory = $true,Position = 0,HelpMessage = 'Virtual Machine',ValueFromPipeline = $true)] [Alias('Name')] [ValidateNotNullorEmpty()] [String]$VM, [Parameter(Mandatory = $false,Position = 1,HelpMessage = 'Filter used to find ACTIVE, RELIC, or ALL virtual machines. Defaults to ALL.')] [Alias('archiveStatusFilterOpt')] [ValidateNotNullorEmpty()] [ValidateSet('ALL', 'ACTIVE', 'RELIC')] [String]$Filter = 'ALL', [Parameter(Mandatory = $false,Position = 2,HelpMessage = 'The SLA Domain in Rubrik',ValueFromPipeline = $true)] [ValidateNotNullorEmpty()] [String]$SLA = '*', [Parameter(Mandatory = $false,Position = 3,HelpMessage = 'Rubrik FQDN or IP address')] [ValidateNotNullorEmpty()] [String]$Server = $global:RubrikConnection.server ) Process { TestRubrikConnection Write-Verbose -Message 'Gathering VM ID value from Rubrik' $uri = 'https://'+$Server+"/vm?archiveStatusFilterOpt=$Filter" try { $r = Invoke-WebRequest -Uri $uri -Headers $Header -Method Get $result = (ConvertFrom-Json -InputObject $r.Content) | Where-Object -FilterScript { $_.name -like $VM -and $_.effectiveSlaDomainName -like $SLA } if (!$result) { throw "No VM found with the name $VM" } Write-Verbose -Message "Retrieved ID: $result" return $result } catch { throw $_ } } # End of process } # End of function |