-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathConvertTo-CompressedIPAutomata.ps1
24 lines (24 loc) · 1.19 KB
/
ConvertTo-CompressedIPAutomata.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
function ConvertTo-CompressedBase64 {
[cmdletbinding()]
param(
[Parameter(
ValueFromPipeline=$true
)]
[string] $InputObject
)
$ms = New-Object System.IO.MemoryStream
$cs = New-Object System.IO.Compression.GZipStream($ms, [System.IO.Compression.CompressionMode]::Compress)
$sw = New-Object System.IO.StreamWriter($cs)
$sw.Write($InputObject.ToCharArray())
$sw.Close()
[System.Convert]::ToBase64String($ms.ToArray())
}
$null = $psISE.CurrentPowerShellTab.AddOnsMenu.Submenus.Add(
'ConvertTo-CompressedIPAutomata', {
$StringBuilder = '$host.UI.RawUI.BufferSize=new-object Management.Automation.Host.Size(320,50)',
'$bd=[Convert]::FromBase64String(''{0}'')',
'$ms=New-Object IO.MemoryStream;$ms.Write($bd,0,$bd.Length);$null=$ms.Seek(0,0)',
'(New-Object IO.StreamReader((New-Object IO.Compression.GZipStream($ms,[IO.Compression.CompressionMode]0)))).ReadToEnd()|Invoke-Expression' -join ';'
$StringBuilder -f (ConvertTo-CompressedBase64 -InputObject $psISE.CurrentFile.Editor.SelectedText) | Set-Clipboard
}, 'CTRL+ALT+U'
)