private/StatusMessage/Set-StatusMessagePrefix.ps1

function Set-StatusMessagePrefix {
    <#
    .DESCRIPTION
        Sets the prefix ( TimeStamp | Label | Indentation ) that will be added to each status message line.
    #>

    [OutputType([HashTable])]
    [CmdletBinding()]
    param ( [Parameter(Mandatory,ValueFromPipeline)] [HashTable] $MessageObject )

    process {

        try {

            $prefixes = New-Object System.Collections.Generic.List[System.String]

            if ( $MessageObject.TimeStamps ) {
                $prefixes.Add( '{0} ' -f $((Get-Date).ToString('yyyy-MM-dd HH:mm:ss')) )
            }

            if ( $MessageObject.Labels -and ( $MessageObject.Type -in $MessageObject.LabelTypes) ) {
                $prefixes.Add( '{0}: ' -f $MessageObject.Type.ToUpper() )
            }

            if ( $MessageObject.IndentationLevel -gt 0 ) {
                $prefixes.Add( '{0} ' -f ($MessageObject.IndentationString * $MessageObject.IndentationLevel) )
            }

            $prefix = $prefixes -join ''

            if ( -not [string]::IsNullOrEmpty($prefix ) ) {
                $MessageObject.MessagePrefix = $prefix
                $MessageObject.DebugObjectPrefix = $prefix.Substring(0,$prefix.length -1) +
                                                   $MessageObject.IndentationString + ' '
            }

            Write-Output $MessageObject

        }
        catch {

            Write-ExceptionMessage -e $_

        }

    }
}