functions/DiskSmartAttributeDescription.functions.ps1

function Get-DiskSmartAttributeDescription
{
    Param(
        [Parameter(Position=0)]
        [ValidateRange(1, 255)]
        [int[]]$AttributeID,
        [Parameter(Position=1)]
        [ValidatePattern("^(0?[1-9A-F])|([1-9A-F])([0-9A-F])$")]
        [string[]]$AttributeIDHex,
        [Parameter(Position=2)]
        [ArgumentCompleter([AttributeNameCompleter])]
        [string[]]$AttributeName
    )

    foreach ($attribute in $descriptions)
    {
        if ((-not ($AttributeID -or $AttributeIDHex -or $AttributeName)) -or
            ($AttributeID -contains $attribute.AttributeID) -or
            ($AttributeIDHex -contains $attribute.AttributeID.ToString('X')) -or
            ($AttributeName.Where{$attribute.AttributeName -like $PSItem}))
        {
            $attribute
        }
    }
}