我尝试回显一个字符串,并通过将回显的字符串作为输入来使用base64进行编码。
Write-Host "Hello World" | $b = [System.Convert]::FromBase64String($_) ; [System.Text.Encoding]::UTF8.GetString($b)但是为了降低误差,
At line:1 char:28
+ Write-Host "Hello World" | $b = [System.Convert]::FromBase64String($_) ; [System ...
+ ~~
Expressions are only allowed as the first element of a pipeline.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : ExpressionsMustBeFirstInPipeline你有什么想法吗?
发布于 2017-03-03 13:16:22
这意味着您试图通过管道传递到的函数不接受管道。
您将需要使用变量来传递给函数。
例如:
// convert string to base64
$a = "Hello World"
$b = [System.Text.Encoding]::UTF8.GetBytes($a)
$c = [System.Convert]::ToBase64String($b)
Write-Host $c发布于 2017-04-14 03:41:45
您可以使用Write-output并通过管道将其发送到New-Variable
Write-output "test" | New-Variable -Name b
$b = [System.Convert]::FromBase64String($b)
[System.Text.Encoding]::UTF8.GetString($b)您还可以为以下内容创建函数:
function Verb-Noun{
Param( [Parameter(Mandatory=$true,ValueFromPipeline=$true,Position=0)][string]$string )
[System.Text.Encoding]::UTF8.GetString( ( [System.Convert]::FromBase64String($string) ) )
}
Write-Output "test" | Verb-Noun请注意,您必须使用Write-output通过管道传输字符串。Write-Host在这里不能工作。
此外,您的字符串"Hello world“不能使用此方法进行转换,因为[System.Convert]::FromBase64String($string)只能处理长度为4的倍数的字符串。(我想这只是一个不太好的例子)
https://stackoverflow.com/questions/42570825
复制相似问题