Functions/Get-vRAReservationPolicy.psm1

function Get-vRAReservationPolicy {
<#
    .SYNOPSIS
    Retrieve vRA Reservation Policies
    
    .DESCRIPTION
    Retrieve vRA Reservation Policies
    
    .PARAMETER Id
    Specify the ID of a Reservation Policy

    .PARAMETER Name
    Specify the Name of a Reservation Policy

    .PARAMETER Limit
    The number of entries returned per page from the API. This has a default value of 100.

    .INPUTS
    System.String

    .OUTPUTS
    System.Management.Automation.PSObject.

    .EXAMPLE
    Get-vRAReservationPolicy
    
    .EXAMPLE
    Get-vRAReservationPolicy -Id "068afd10-560f-4360-aa52-786a28573fdc"

    .EXAMPLE
    Get-vRAReservationPolicy -Name "ReservationPolicy01","ReservationPolicy02"
#>

[CmdletBinding(DefaultParameterSetName="Standard")][OutputType('System.Management.Automation.PSObject')]

    Param (

    [parameter(Mandatory=$true,ValueFromPipeline=$false,ParameterSetName="ById")]
    [ValidateNotNullOrEmpty()]
    [String[]]$Id,         

    [parameter(Mandatory=$true,ValueFromPipeline=$false,ParameterSetName="ByName")]
    [ValidateNotNullOrEmpty()]
    [String[]]$Name, 
    
    [parameter(Mandatory=$false,ValueFromPipeline=$false)]
    [ValidateNotNullOrEmpty()]
    [String]$Limit = "100" 
    )

    try {                
        switch ($PsCmdlet.ParameterSetName) 
        { 
            "ById"  {                
                
                foreach ($ReservationPolicyId in $Id){

                    $URI = "/reservation-service/api/reservations/policies?`$filter=id%20eq%20'$($ReservationPolicyId)'&reservationPolicyTypeId%20eq%20'Infrastructure.Reservation.Policy.ComputeResource'"

                    # --- Run vRA REST Request
                    $Response = Invoke-vRARestMethod -Method GET -URI $URI

                    foreach ($ReservationPolicy in $Response.content){

                        [pscustomobject]@{

                            Name = $ReservationPolicy.name
                            Id = $ReservationPolicy.id                
                            Description = $ReservationPolicy.description
                            CreatedDate = $ReservationPolicy.createdDate
                            LastUpdated = $ReservationPolicy.lastUpdated
                            ReservationPolicyTypeId = $ReservationPolicy.reservationPolicyTypeId
                        }
                    }
                }                              
            
                break
            }

            "ByName"  {                

                foreach ($ReservationPolicyName in $Name){

                    $URI = "/reservation-service/api/reservations/policies?`$filter=name%20eq%20'$($ReservationPolicyName)'&reservationPolicyTypeId%20eq%20'Infrastructure.Reservation.Policy.ComputeResource'"

                    # --- Run vRA REST Request
                    $Response = Invoke-vRARestMethod -Method GET -URI $URI

                    foreach ($ReservationPolicy in $Response.content){

                        [pscustomobject]@{

                            Name = $ReservationPolicy.name
                            Id = $ReservationPolicy.id                
                            Description = $ReservationPolicy.description
                            CreatedDate = $ReservationPolicy.createdDate
                            LastUpdated = $ReservationPolicy.lastUpdated
                            ReservationPolicyTypeId = $ReservationPolicy.reservationPolicyTypeId
                        }
                    }
                }
                
                break
            }

            "Standard"  {

                $URI = "/reservation-service/api/reservations/policies?`$filter=reservationPolicyTypeId%20eq%20'Infrastructure.Reservation.Policy.ComputeResource'"

                # --- Run vRA REST Request
                $Response = Invoke-vRARestMethod -Method GET -URI $URI

                foreach ($ReservationPolicy in $Response.content){

                    [pscustomobject]@{

                        Name = $ReservationPolicy.name
                        Id = $ReservationPolicy.id                
                        Description = $ReservationPolicy.description
                        CreatedDate = $ReservationPolicy.createdDate
                        LastUpdated = $ReservationPolicy.lastUpdated
                        ReservationPolicyTypeId = $ReservationPolicy.reservationPolicyTypeId
                    }
                }
                
                break
            }
        }
    }
    catch [Exception]{

        throw
    }
}