There are no default functions available in PowerShell for encoding and decoding base 64 strings. However, the .NET libraries contain this. Here are two wrapper functions ConvertFrom-Base64 and ConvertTo-Base64 that you can use to make this easier.
function ConvertTo-Base64
{
[CmdletBinding(DefaultParameterSetName='String')]
[OutputType([String])]
Param
(
# String to convert to base64
[Parameter(Mandatory=$true,
ValueFromPipeline=$true,
ValueFromRemainingArguments=$false,
Position=0,
ParameterSetName='String')]
[ValidateNotNull()]
[ValidateNotNullOrEmpty()]
[string]
$String,
# Param2 help description
[Parameter(ParameterSetName='ByteArray')]
[ValidateNotNull()]
[ValidateNotNullOrEmpty()]
[byte[]]
$ByteArray
)
if($String) {
return [System.Convert]::ToBase64String(([System.Text.Encoding]::UTF8.GetBytes($String)));
} else {
return [System.Convert]::ToBase64String($ByteArray);
}
}
function ConvertFrom-Base64 {
[CmdletBinding()]
Param(
[Parameter(Mandatory=$True,
Position=0,
ValueFromPipeline=$true)]
[ValidateNotNull()]
[ValidateNotNullOrEmpty()]
[string]
$Base64String
)
return [System.Text.Encoding]::UTF8.GetString(([System.Convert]::FromBase64String($Base64String)));
}
These two functions are a part of my PowerShell $profile, which I will create an article about later.