Private/ConvertTo-Authorization.ps1

function ConvertTo-Authorization {
    <#
    .SYNOPSIS
        Convert credential objects to basic authorization headers.
 
    .DESCRIPTION
        Convert credential objects to basic authorization headers.
 
    .INPUTS
        System.Management.Automation.PSCredential
 
    .NOTES
        - Troy Lindsay
        - Twitter: @troylindsay42
        - GitHub: tlindsay42
 
    .EXAMPLE
        ConvertTo-Authorization -Credential ( Get-Credential )
        Converts the credential to a base64 encoded basic authentication authorization
        header value.
 
    .EXAMPLE
        ( Get-Credential ) | ConvertTo-Authorization
        Converts the credential set via the pipeline to a base64 encoded basic
        authentication authorization header value.
 
    .EXAMPLE
        ConvertTo-Authorization ( Get-Credential )
        Converts the credential set via positional parameter to a base64 encoded basic
        authentication authorization header value.
 
    .LINK
        https://tlindsay42.github.io/PSRyver/Private/ConvertTo-Authorization/
 
    .LINK
        https://github.com/tlindsay42/PSRyver/blob/master/PSRyver/Private/ConvertTo-Authorization.ps1
    #>

    [CmdletBinding(
        HelpUri = 'https://tlindsay42.github.io/PSRyver/Private/ConvertTo-Authorization/'
    )]
    [OutputType( [String] )]
    param (
        <#
        Specifies the credential to convert to a base64 encoded basic authentication
        authorization header value.
        #>

        [Parameter(
            Mandatory = $true,
            Position = 0,
            ValueFromPipeline = $true
        )]
        [ValidateNotNull()]
        [PSCredential]
        $Credential
    )

    begin {
        $function = $MyInvocation.MyCommand.Name
        Write-Verbose -Message "Beginning: '${function}'."
    }

    process {
        Write-Verbose -Message (
            "Processing: '${function}' with ParameterSetName '$( $PSCmdlet.ParameterSetName )' and Parameters: " +
            ( $PSBoundParameters | Remove-SensitiveData | Format-Table -AutoSize | Out-String )
        )

        'Basic ' + [System.Convert]::ToBase64String(
            [System.Text.Encoding]::ASCII.GetBytes(
                "$( $Credential.UserName ):$( $Credential.GetNetworkCredential().Password )"
            )
        )
    }

    end {
        Write-Verbose -Message "Ending: '${function}'."
    }
}