我有一个.NET exe文件,我想将其编码为Base-64字符串,然后在稍后使用Powershell从Base64字符串解码为.exe文件.
到目前为止我生成的.exe文件,然而,该文件不能被Windows识别为可以运行的应用程序,并且总是与我传入编码脚本的文件长度不同.
我想我可能在这里使用了错误的编码,但我不确定.
编码脚本:
Function Get-FileName($initialDirectory)
{
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") | Out-Null
$OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
$OpenFileDialog.initialDirectory = $initialDirectory
$OpenFileDialog.filter = "All files (*.*)| *.*"
$OpenFileDialog.ShowDialog() | Out-Null
$FileName = $OpenFileDialog.filename
$FileName
} #end function Get-FileName
$FileName = Get-FileName
$Data = get-content $FileName
$Bytes = [System.Text.Encoding]::Unicode.GetBytes($Data)
$EncodedData = [Convert]::ToBase64String($Bytes)
Run Code Online (Sandbox Code Playgroud)
解码脚本:
$Data = get-content $FileName
$Bytes = [System.Text.Encoding]::UTF8.GetBytes($Data)
$EncodedData = [System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String($Bytes))
$EncodedData | Out-File ( $FileName )
Run Code Online (Sandbox Code Playgroud) 我正在更新的一段代码使用select case语句比较字符串的值...
我注意到,对于两个可能的值,我最终可能会重复使用相同的代码。
因此,我添加了一个案例:
Case "Yes/No" Or "Continue"
Run Code Online (Sandbox Code Playgroud)
但是,到了这一点,我将抛出一个无效的强制转换异常。
异常表示,它试图将“是/否”转换为Long值而不是字符串。
采用“或“继续””并将其移至带有重复代码段的自己的案例语句中,即可解决此问题。
我试图找出为什么“是/否”或“继续”没有按我期望的方式工作。
我的印象是,我可以在那里写一个表达式,类似于编写If语句时的表达方式。