Functions/Public/Get-vRAContentPackage.psm1

function Get-vRAContentPackage {
<#
    .SYNOPSIS
    Retrieve vRA Content Packages
    
    .DESCRIPTION
    Retrieve vRA Content Packages
    
    .PARAMETER Id
    Specify the ID of a Content Package

    .PARAMETER Name
    Specify the Name of a Content Package

    .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-vRAContentPackage
    
    .EXAMPLE
    Get-vRAContentPackage -Id "b2d72c5d-775b-400c-8d79-b2483e321bae"

    .EXAMPLE
    Get-vRAContentPackage -Name "ContentPackage01","ContentPackage02"
#>

[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" 
    )

    # --- Test for vRA API version
    xRequires -Version 7.0
    
    try {                
        switch ($PsCmdlet.ParameterSetName) 
        { 
            "ById"  {                
                
                foreach ($ContentPackageId in $Id){

                    $URI = "/content-management-service/api/packages/$($ContentPackageId)"

                    # --- Run vRA REST Request
                    $Response = Invoke-vRARestMethod -Method GET -URI $URI
                    
                    if (-not $Response){
                    
                        throw "Unable to retrieve Content Package with Id $($Id)"
                    }              
                    
                    [pscustomobject]@{

                        Name = $Response.name
                        Id = $Response.id                
                        Description = $Response.description
                        TenantId = $Response.tenantId
                        SubtenantId = $Response.subtenantId
                        Contents = $Response.contents
                        CreatedDate = $Response.createdDate
                        LastUpdated = $Response.lastUpdated
                        version = $Response.version
                    }
                }                              
            
                break
            }

            "ByName"  {                

               foreach ($ContentPackageName in $Name){

                    $URI = "/content-management-service/api/packages?`$filter=name%20eq%20'$($ContentPackageName)'"

                    # --- Run vRA REST Request
                    $Response = Invoke-vRARestMethod -Method GET -URI $URI
                    
                    if (-not $Response.content){
                    
                        throw "Unable to retrieve Content Package with Name $($Name)"
                    }                  

                    foreach ($ContentPackage in $Response.content){

                        [pscustomobject]@{

                            Name = $ContentPackage.name
                            Id = $ContentPackage.id                
                            Description = $ContentPackage.description
                            TenantId = $ContentPackage.tenantId
                            SubtenantId = $ContentPackage.subtenantId
                            Contents = $ContentPackage.contents
                            CreatedDate = $ContentPackage.createdDate
                            LastUpdated = $ContentPackage.lastUpdated
                            version = $ContentPackage.version
                        }
                    }
                }  
                
                break
            }

            "Standard"  {

                $URI = "/content-management-service/api/packages"

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

                $ContentPackages = $Response.content

                foreach ($ContentPackage in $ContentPackages){

                    [pscustomobject]@{

                        Name = $ContentPackage.name
                        Id = $ContentPackage.id                
                        Description = $ContentPackage.description
                        TenantId = $ContentPackage.tenantId
                        SubtenantId = $ContentPackage.subtenantId
                        Contents = $ContentPackage.contents
                        CreatedDate = $ContentPackage.createdDate
                        LastUpdated = $ContentPackage.lastUpdated
                        version = $ContentPackage.version
                    }
                }
                
                break
            }
        }
    }
    catch [Exception]{

        throw
    }
}