Powershell如何在命令行上输入多行

Powershell如何在命令行上输入多行,powershell,Powershell,目标: function Get-Base64 { Write-Host 'Decode:' -ForegroundColor Yellow -NoNewline $data = Read-Host $decode = [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String("$data")) $decode.ToString() } PS > Get-Base64 Decode)ZXZhbChm

目标:

function Get-Base64 {
  Write-Host 'Decode:' -ForegroundColor Yellow -NoNewline
  $data = Read-Host
  $decode = [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String("$data"))
  $decode.ToString()
      }
PS > Get-Base64
Decode)ZXZhbChmdW5jdGlvbihwLGEsYyxrLGUsZCl7ZT1mdW5jdGlvbihjKXtyZXR1cm4oYzxhPycnOmUo
eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(
PS > cGFyc2VJbnQoYy9hKSkpKygoYz1jJWEpPjM1P1N0cmluZy5mcm9tQ2hhckNvZGUoYysyOSk6Yy50
cGFyc2VJbnQoYy9hKSkpKygoYz1jJWEpPjM1P1N0cmluZy5mcm9tQ2hhckNvZGUoYysyOSk6Yy50 : The term 'cGFyc2VJbnQoYy9hKSkpKygoYz1jJWEpPjM1P1N0cmluZy5mcm9tQ2hhckNvZGUoYysyOSk6Yy50' is not recognized as the name of a cmdlet, function, script file,
or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ cGFyc2VJbnQoYy9hKSkpKygoYz1jJWEpPjM1P1N0cmluZy5mcm9tQ2hhckNvZGUoYysyO ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (cGFyc2VJbnQoYy9...GUoYysyOSk6Yy50:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException
我试图找到一个解决方案,允许我输入一个可以是多行的Base64编码字符串。目标是解码字符串并在powershell控制台中获得返回的输出。最初,我称之为WinForms对话,但是,这在隐式远程处理中是不可能的

这就是我目前的情况:

function Get-Base64 {
  Write-Host 'Decode:' -ForegroundColor Yellow -NoNewline
  $data = Read-Host
  $decode = [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String("$data"))
  $decode.ToString()
      }
PS > Get-Base64
Decode)ZXZhbChmdW5jdGlvbihwLGEsYyxrLGUsZCl7ZT1mdW5jdGlvbihjKXtyZXR1cm4oYzxhPycnOmUo
eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(
PS > cGFyc2VJbnQoYy9hKSkpKygoYz1jJWEpPjM1P1N0cmluZy5mcm9tQ2hhckNvZGUoYysyOSk6Yy50
cGFyc2VJbnQoYy9hKSkpKygoYz1jJWEpPjM1P1N0cmluZy5mcm9tQ2hhckNvZGUoYysyOSk6Yy50 : The term 'cGFyc2VJbnQoYy9hKSkpKygoYz1jJWEpPjM1P1N0cmluZy5mcm9tQ2hhckNvZGUoYysyOSk6Yy50' is not recognized as the name of a cmdlet, function, script file,
or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ cGFyc2VJbnQoYy9hKSkpKygoYz1jJWEpPjM1P1N0cmluZy5mcm9tQ2hhckNvZGUoYysyO ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (cGFyc2VJbnQoYy9...GUoYysyOSk6Yy50:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException
输入多行时,我收到以下错误消息:

function Get-Base64 {
  Write-Host 'Decode:' -ForegroundColor Yellow -NoNewline
  $data = Read-Host
  $decode = [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String("$data"))
  $decode.ToString()
      }
PS > Get-Base64
Decode)ZXZhbChmdW5jdGlvbihwLGEsYyxrLGUsZCl7ZT1mdW5jdGlvbihjKXtyZXR1cm4oYzxhPycnOmUo
eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(
PS > cGFyc2VJbnQoYy9hKSkpKygoYz1jJWEpPjM1P1N0cmluZy5mcm9tQ2hhckNvZGUoYysyOSk6Yy50
cGFyc2VJbnQoYy9hKSkpKygoYz1jJWEpPjM1P1N0cmluZy5mcm9tQ2hhckNvZGUoYysyOSk6Yy50 : The term 'cGFyc2VJbnQoYy9hKSkpKygoYz1jJWEpPjM1P1N0cmluZy5mcm9tQ2hhckNvZGUoYysyOSk6Yy50' is not recognized as the name of a cmdlet, function, script file,
or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ cGFyc2VJbnQoYy9hKSkpKygoYz1jJWEpPjM1P1N0cmluZy5mcm9tQ2hhckNvZGUoYysyO ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (cGFyc2VJbnQoYy9...GUoYysyOSk6Yy50:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException
PS>Get-Base64
解码)ZXZHBCHMDW5JDGLVBIHWLGESYXRLGUSCL7ZT1MDW5JDGLVBIHJKXTYZXR1CM4OYZXHYCNOMUO
eval(function(p,a,c,k,e,d){e=function(c){return(c cgfyc2vjbnqoyy9hkpkygoyz1jweppjm1p1n0cmluzy5mcm9tq2hhcknvzguoyysk6yy50
CGFYC2VJBNQOYY9HKSKPKYGOYZ1JJWEPPJM1P1N0CMLUZY5MCM9TQ2HHCKNVZGUYYSYOSK6YY50:术语“CGFYC2VJBNQOYY9HKSKPKYGOYZ1JWEPPJM1P1N0CMLUZY5MCM9TQ2HHCKNVZGUYYSYOSK6YY50”不能识别为cmdlet、函数、脚本文件的名称,
或可操作的程序。请检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。
第1行字符:1
+CGFYC2VJBNQOYY9HKSKPKYGOYZ1JJWEPPJM1P1N0CMLUZY5MCM9TQ2HHCKNVZGUYYSYO。。。
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+CategoryInfo:ObjectNotFound:(cGFyc2VJbnQoYy9…GUYYSYOSK6YY50:String)[],CommandNotFoundException
+FullyQualifiedErrorId:CommandNotFoundException
您可以看到它解码了第一部分,然后在下一行,将其作为cmdlet读取

问题:

function Get-Base64 {
  Write-Host 'Decode:' -ForegroundColor Yellow -NoNewline
  $data = Read-Host
  $decode = [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String("$data"))
  $decode.ToString()
      }
PS > Get-Base64
Decode)ZXZhbChmdW5jdGlvbihwLGEsYyxrLGUsZCl7ZT1mdW5jdGlvbihjKXtyZXR1cm4oYzxhPycnOmUo
eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(
PS > cGFyc2VJbnQoYy9hKSkpKygoYz1jJWEpPjM1P1N0cmluZy5mcm9tQ2hhckNvZGUoYysyOSk6Yy50
cGFyc2VJbnQoYy9hKSkpKygoYz1jJWEpPjM1P1N0cmluZy5mcm9tQ2hhckNvZGUoYysyOSk6Yy50 : The term 'cGFyc2VJbnQoYy9hKSkpKygoYz1jJWEpPjM1P1N0cmluZy5mcm9tQ2hhckNvZGUoYysyOSk6Yy50' is not recognized as the name of a cmdlet, function, script file,
or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ cGFyc2VJbnQoYy9hKSkpKygoYz1jJWEpPjM1P1N0cmluZy5mcm9tQ2hhckNvZGUoYysyO ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (cGFyc2VJbnQoYy9...GUoYysyOSk6Yy50:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

如何避免格式冲突以解码多行?

base64编码字符串不能在多行上;这些字符串将是独立的base64编码字符串。原始内容中的换行符将被编码,而不是保留

如果要读取多个独立的base64编码字符串,则不能通过调用
read Host
,只读取一行

您将不得不循环并持续记录行,直到您得到一些要停止的“信号”输入(如空白输入):


base64编码的字符串不能在多行上;这些行应该是单独的、独立的base64编码字符串。原始内容中的换行将被编码,而不是保留

如果要读取多个独立的base64编码字符串,则不能通过调用
read Host
,只读取一行

您将不得不循环并持续记录行,直到您得到一些要停止的“信号”输入(如空白输入):