base64-guid_transform.psm1

# Add a ScriptMethod "ConverBase64GuidToGuid" to the DataType [System.String]
Update-TypeData -TypeName System.String `
                -MemberType ScriptMethod `
                -MemberName ConvertBase64GuidToGuid `
                -Value {[System.Guid]::new([System.Convert]::FromBase64String($this))}

# Add a ScriptMethod "ConverGuidToBase64Guid" to the DataType [System.String]
Update-TypeData -TypeName System.String `
                -MemberType ScriptMethod `
                -MemberName ConvertGuidToBase64Guid `
                -Value {[System.Convert]::ToBase64String([GUID]::new($this).ToByteArray())}

<#
.Synopsis
    Convert Base-64 GUID To GUID
.DESCRIPTION Convert Base-64 GUID ([System.String]) To GUID ([System.Guid])
.EXAMPLE
    Convert-Base64GuidToGuid -Base64Guid XHDilXGzLkGPxeIiZcuM0w==
.INPUTS
    [System.String] DataType Base-64 GUID e.g. XHDilXGzLkGPxeIiZcuM0w==
.OUTPUTS
    [System.Guid] DataType GUID e.g. 95e2705c-b371-412e-8fc5-e22265cb8cd3
#>

function Convert-Base64GuidToGuid
{
    [CmdletBinding()]
    [Alias("ConvertTo-Guid","ConvertFrom-Base64Guid")]
    [OutputType([System.Guid])]
    Param
    (
        # [System.String] DataType Base-64 GUID e.g. XHDilXGzLkGPxeIiZcuM0w==
        [Parameter(Mandatory=$true,
                    ValueFromPipeline=$true,
                    ValueFromPipelineByPropertyName=$true,
                    Position=0)]
        [ValidateNotNullOrEmpty()]
        [System.String]
        $Base64Guid
    )
    return $Base64Guid.ConvertBase64GuidToGuid()
}

<#
.Synopsis
    Convert GUID To Base-64 GUID
.DESCRIPTION Convert GUID ([System.String]) To Base-64 GUID ([System.String])
.EXAMPLE
    Convert-GuidToBase64Guid -Guid 95e2705c-b371-412e-8fc5-e22265cb8cd3
.INPUTS
    [System.String] DataType GUID e.g. 95e2705c-b371-412e-8fc5-e22265cb8cd3
.INPUTS
    [System.Guid] DataType GUID e.g. 95e2705c-b371-412e-8fc5-e22265cb8cd3
.OUTPUTS
    [System.String] DataType Base-64 GUID e.g. XHDilXGzLkGPxeIiZcuM0w==
#>

function Convert-GuidToBase64Guid
{
    [CmdletBinding()]
    [Alias("ConvertTo-Base64Guid","ConvertFrom-Guid")]
    [OutputType([System.String])]
    Param
    (
        # [System.String] or [System.Guid] DataType GUID e.g. 95e2705c-b371-412e-8fc5-e22265cb8cd3
        [Parameter(Mandatory=$true,
                    ValueFromPipeline=$true,
                    ValueFromPipelineByPropertyName=$true,
                    Position=0)]
        [ValidateNotNullOrEmpty()]
        [System.String]
        $Guid
    )
    return $Guid.ConvertGuidToBase64Guid()
}