Functions to work with Base64 strings added
This commit is contained in:
parent
5493753da7
commit
cae193a3b3
@ -0,0 +1,99 @@
|
|||||||
|
|
||||||
|
Function ConvertTo-Base64String {
|
||||||
|
<#
|
||||||
|
#>
|
||||||
|
[CmdletBinding(DefaultParameterSetName="FromString")]
|
||||||
|
param (
|
||||||
|
[Parameter(Position=1,ParameterSetName="FromString")]
|
||||||
|
[String] $String,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName="FromFile")]
|
||||||
|
[String] $Path,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName="FromFile")]
|
||||||
|
[Int] $ChunkSize = 5KB,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName="FromFile")]
|
||||||
|
[Switch] $OneChunk
|
||||||
|
)
|
||||||
|
switch($PSCmdlet.ParameterSetName) {
|
||||||
|
"FromString" {
|
||||||
|
[System.Text.Encoding]::UTF8.GetBytes($String)
|
||||||
|
[System.Convert]::ToBase64String($Bytes)
|
||||||
|
}
|
||||||
|
"FromFile" {
|
||||||
|
$FileStream = [IO.File]::Open($Path, [System.IO.FileMode]::Open)
|
||||||
|
$BytesToRead = $FileStream.Length
|
||||||
|
|
||||||
|
if ($OneChunk) {
|
||||||
|
$ChunkSize = $BytesToRead
|
||||||
|
}
|
||||||
|
|
||||||
|
$Bytes = New-Object Byte[] $ChunkSize
|
||||||
|
while ($BytesToRead -gt 0) {
|
||||||
|
if ($BytesToRead -lt $ChunkSize) {
|
||||||
|
$ChunkSize = $BytesToRead
|
||||||
|
$Bytes = New-Object Byte[] $ChunkSize
|
||||||
|
}
|
||||||
|
#Write-Host ("BytesToRead: {0}, ChunkSize: {1}" -f $BytesToRead, $ChunkSize )
|
||||||
|
$BytesRead = $FileStream.Read($Bytes, 0, $ChunkSize)
|
||||||
|
$BytesToRead -= $BytesRead
|
||||||
|
|
||||||
|
[System.Convert]::ToBase64String($Bytes)
|
||||||
|
}
|
||||||
|
$FileStream.Close()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Function ConvertFrom-Base64String {
|
||||||
|
<#
|
||||||
|
#>
|
||||||
|
[CmdletBinding(DefaultParameterSetName="ToByteArray")]
|
||||||
|
param (
|
||||||
|
[Parameter(Position=1,ValueFromPipeline=$true)]
|
||||||
|
[String] $Base64String,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName="ToFile")]
|
||||||
|
[String] $Path,
|
||||||
|
|
||||||
|
[Parameter(ParameterSetName="ToString")]
|
||||||
|
[Switch] $ToString
|
||||||
|
)
|
||||||
|
begin {
|
||||||
|
switch($PSCmdlet.ParameterSetName) {
|
||||||
|
"ToFile" {
|
||||||
|
if ([IO.File]::Exists($Path)) {
|
||||||
|
[IO.File]::Delete($Path)
|
||||||
|
}
|
||||||
|
$FileStream = [IO.File]::Open($Path, [IO.FileMode]::Append)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
process {
|
||||||
|
foreach( $Line in ($Base64String -split '\n')) {
|
||||||
|
$Bytes = [System.Convert]::FromBase64String($Line)
|
||||||
|
|
||||||
|
switch($PSCmdlet.ParameterSetName) {
|
||||||
|
"ToFile" {
|
||||||
|
$FileStream.Write($Bytes, 0, $Bytes.Length)
|
||||||
|
}
|
||||||
|
"ToString" {
|
||||||
|
[System.Text.Encoding]::UTF8.GetString($Bytes)
|
||||||
|
}
|
||||||
|
"ToByteArray" {
|
||||||
|
$Bytes
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
end {
|
||||||
|
switch($PSCmdlet.ParameterSetName) {
|
||||||
|
"ToFile" {
|
||||||
|
$FileStream.Close()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user