Public/Get-CAMBase.ps1

function Get-CAMBase
{
    <#
    .SYNOPSIS
        Function to retrieve Base from the Cireson Asset Management
    .DESCRIPTION
        Function to retrieve Base from the Cireson Asset Management
    .EXAMPLE
        Get-CAMBase
    .EXAMPLE
        Get-CAMBase -DisplayName "*Pro"
    .EXAMPLE
        Get-CAMBase -id '3cbgg558-a09c-b717-2401-05aef430b01f'
    .NOTES
        Francois-Xavier Cat
        @Lazywinadm
        www.lazywinadmin.com
        github.com/lazywinadmin
    #>

    [CmdletBinding(DefaultParameterSetName = 'DisplayName')]
    PARAM (
        [Parameter(ParameterSetName = 'DisplayName')]
        [System.String]$DisplayName,
        
        [Parameter(ParameterSetName = 'ID')]
        $Id
    )
    BEGIN
    {
        if (-not (Get-Module -Name SMLets)) { Import-Module -Name SMLets -ErrorAction Stop }
    }
    PROCESS
    {
        TRY
        {
            IF ($PSBoundParameters['DisplayName'])
            {
                Write-Verbose -Message "[PROCESS] Parameter: DisplayName"
                get-scsmobject -class (get-scsmclass -name 'Cireson.AssetManagement.Base') -Filter "DisplayName -like $DisplayName"
            }
            ELSEIF ($PSBoundParameters['ID'])
            {
                Write-Verbose -Message "[PROCESS] Parameter: ID"
                get-scsmobject -class (get-scsmclass -name 'Cireson.AssetManagement.Base') -Filter "Id -eq $ID"
            }
            ELSE
            {
                Write-Verbose -Message "[PROCESS] No Parameter specified, retrieving all"
                get-scsmobject -class (get-scsmclass -name 'Cireson.AssetManagement.Base')
            }
        }
        CATCH
        {
            Write-Error -Message "[PROCESS] An Error occured while querying Hardware Assets"
            $Error[0].Exception.Message
        }
    }
}