Public/Convert-BlueCatPropertyString.ps1

function Convert-BlueCatPropertyString {
<#
.SYNOPSIS
    Converts a property string to a PSCustomObject
.DESCRIPTION
    The Convert-BlueCatPropertyString cmdlet converts a pipe (|) delimited name=value pair string from the BlueCat API into a PSCustomObject so that properties can be referenced as object members by name.
.PARAMETER Property
    A string value representing object properties as returned by the BlueCat API
.EXAMPLE
    PS> $PropertyObject = Convert-BlueCatPropertyString -Property $PropertyString
.EXAMPLE
    PS> $PropertyObject = $PropertyString | Convert-BlueCatPropertyString
.INPUTS
    [string] value as returned by the BlueCat API, '|' delimited name=value pairs
.OUTPUTS
    [PSCustomObject]
#>

    [CmdletBinding()]

    param(
        [Parameter(Mandatory,ValueFromPipeline,Position=0)]
        [Alias('Properties','PropertyString')]
        [string] $Property
    )

    process {
        $PropertyObject = New-Object -TypeName psobject
        $Properties     = $Property.TrimEnd('|').Split('|')
        foreach ($PropertyItem in $Properties) {
            $bits = $PropertyItem.Split('=',2)
            if ($bits[1] -eq 'false') {
                $PropertyObject | Add-Member -MemberType NoteProperty -Name $bits[0] -Value $false
            } elseif ($bits[1] -eq 'true') {
                $PropertyObject | Add-Member -MemberType NoteProperty -Name $bits[0] -Value $true
            } else {
                $PropertyObject | Add-Member -MemberType NoteProperty -Name $bits[0] -Value $bits[1]
            }
        }

        $PropertyObject
    }
}