public/ScriptProcessing/ConvertFrom-Base64.ps1
function ConvertFrom-Base64 { <# .SYNOPSIS Reverts a base64 string into text .COMPONENT ScriptProcessing .DESCRIPTION This function reverts a base64 encoded string back into its original text form. .EXAMPLE PS> ConvertFrom-Base64 'Q2h1Y2hpY2jDpHNjaHRsaQ' Chuchichäschtli .EXAMPLE PS> 'QwBoAHUAYwBoAGkAYwBoAOQAcwBjAGgAdABsAGkA' | ConvertFrom-Base64 -Encoding ([System.Text.Encoding]::Unicode) Chuchichäschtli #> [CmdletBinding(SupportsShouldProcess = $false, HelpUri="https://github.com/pagebox/brickBOX/wiki/ConvertFrom-Base64")] [OutputType([string])] param ( [Parameter(Mandatory, Position = 0, ValueFromPipeline = $true)][ValidateNotNullOrEmpty()][string]$Base64String, [System.Text.Encoding]$Encoding = [System.Text.Encoding]::Utf8 ) process { # calculate padding (https://en.wikipedia.org/wiki/Base64#Output_padding) # about base64: Every 3 bytes of input (string) produces 4 characters of output (base64). # When the number of input bytes is not a multiple of 3, padding characters "=" must be added at the end. [string]$padding = '=' * (($Base64String.Length % 4) -eq 0 ? 0 : 4 - ($Base64String.Length % 4)) # [Text.Encoding]::Utf8.GetString([Convert]::FromBase64String($Base64String)) return $Encoding.GetString([Convert]::FromBase64String($Base64String + $padding)) } } |