Functions/Get-BricksetYear.psm1

function Get-BricksetYear {
<#
    .SYNOPSIS
    Get Brickset Years for a given Theme
     
    .DESCRIPTION
    Get Brickset Years for a given Theme
     
    .PARAMETER APIKey
    API Key
 
    .PARAMETER Theme
    Brickset Theme
 
    .INPUTS
    System.String.
 
    .OUTPUTS
    Brickset.years
 
    .EXAMPLE
    Get-BricksetYear -APIKey 'Tk5C-KTA2-Gw2Q' -Theme 'Indiana Jones'
 
    .EXAMPLE
    Get-BricksetThemes | Where-Object {$_.Theme -eq 'Indiana Jones'} | Get-BricksetYear -APIKey 'Tk5C-KTA2-Gw2Q'
#>

[CmdletBinding()][OutputType('Brickset.years')]

    Param
    (

    [parameter(Mandatory=$false)]
    [ValidateNotNullOrEmpty()]
    [String]$APIKey,

    [parameter(Mandatory=$true,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true)]
    [ValidateNotNullOrEmpty()]
    [String]$Theme
    )
    
begin {


    # --- If $APIKey not supplied, try $Global:BricksetAPIKey

    if (!($PSBoundParameters.ContainsKey('APIKey'))){
            
        try {
    
            Get-Variable BricksetAPIKey | Out-Null
            $APIKey = $BricksetAPIKey
        }
        catch [Exception] {

            throw 'Brickset API Key not specified nor exists in $Global:BricksetAPIKey. Please set this to continue'
        }
    }

    # --- Make the Webservice Call
    if (!($Webservice)){

        $Global:Webservice = New-WebServiceProxy -Uri 'http://brickset.com/api/v2.asmx?WSDL' -Namespace 'Brickset' -Class 'Sets'
    }  
}  

process {

    try {
        
        foreach ($ThemeObject in $Theme){

            $Webservice.getYears($APIKey,$ThemeObject)
        }
    }
    catch [Exception]{
        
        throw "Unable to get Brickset Years for a given Theme"
    }
}
}