Private/Convert-Base64.ps1
function Convert-Base64 { [cmdletbinding()] Param ( [parameter(Mandatory=$true,Position=0)] [ValidateSet("NormalString","Base64String","WebSafeBase64String")] [ValidateScript({if($_ -eq $To){throw "The 'From' parameter must not be the same as the 'To' parameter"}else{$true}})] [String] $From, [parameter(Mandatory=$true,Position=1)] [ValidateSet("NormalString","Base64String","WebSafeBase64String")] [ValidateScript({if($_ -eq $From){throw "The 'To' parameter must not be the same as the 'From' parameter"}else{$true}})] [String] $To, [parameter(Mandatory=$true,Position=2,ValueFromPipeline=$true)] [String] $String, [parameter(Mandatory=$false)] [String] $OutFile ) if ($From -eq "NormalString") { $String = [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($String)) } elseif ($From -eq "WebSafeBase64String") { $String = $String.Replace('_', '/').Replace('-', '+').Replace('|','=') switch ($String.Length % 4) { 2 {$String += "=="} 3 {$String += "="} } } if ($To -eq "NormalString") { $String = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($String)) } elseif ($To -eq "WebSafeBase64String") { $String = $String.TrimEnd("=").Replace('+', '-').Replace('/', '_'); } if ($OutFile) { $String | Set-Content $OutFile -Force } else { return $String } } |