
## Description

This function Encodes AND Decodes a File OR String

## The Function

### [B64] 

This funtion takes 1 parameter with 4 versions:
 
[encFile] - encode file

[encString] - encode string

[decFile] - decode file

[decString] - decode string

***

## [SYNTAX]

### Encode a File 

`B64 -encFile "C:\Users\User\Desktop\example.txt"`

### Decode a File 

`B64 -decFile "C:\Users\User\Desktop\example.txt"`

WARNING! When working with strings you have to wrap it in SINGLE QUOTES!

### Encode a String 

`B64 -encString 'start notepad'`

### Decode a String 

`B64 -decString 'cwB0AGEAcgB0ACAAbgBvAHQAZQBwAGEAZAA='`

### Copy out-put directly to clipboard with the following syntax:

COMMAND | clip

***

```PowerShell
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
		}
}
```