Table of Contents
This function Encodes AND Decodes a File OR String
This funtion takes 1 parameter with 4 versions:
[encFile] - encode file
[encString] - encode string
[decFile] - decode file
[decString] - decode string
B64 -encFile "C:\Users\User\Desktop\example.txt"
B64 -decFile "C:\Users\User\Desktop\example.txt"
WARNING! When working with strings you have to wrap it in SINGLE QUOTES!
B64 -encString 'start notepad'
B64 -decString 'cwB0AGEAcgB0ACAAbgBvAHQAZQBwAGEAZAA='
COMMAND | clip
function B64 {
[CmdletBinding(DefaultParameterSetName="encFile")]
param(
[Parameter(Position=0, ParameterSetName="encFile")]
[Alias("ef")]
[string]$encFile,
[Parameter(Position=0, ParameterSetName="encString")]
[Alias("es")]
[string]$encString,
[Parameter(Position=0, ParameterSetName="decFile")]
[Alias("df")]
[string]$decFile,
[Parameter(Position=0, ParameterSetName="decString")]
[Alias("ds")]
[string]$decString
)
if ($psCmdlet.ParameterSetName -eq "encFile") {
$encoded = [Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes((Get-Content -Path $encFile -Raw -Encoding UTF8)))
return $encoded
}
elseif ($psCmdlet.ParameterSetName -eq "encString") {
$encoded = [Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes($encString))
return $encoded
}
elseif ($psCmdlet.ParameterSetName -eq "decFile") {
$data = Get-Content $decFile
$decoded = [System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String($data))
return $decoded
}
elseif ($psCmdlet.ParameterSetName -eq "decString") {
$decoded = [System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String($decString))
return $decoded
}
}