首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Write-host字符串,并获取与输入相同的内容以供进一步执行

Write-host字符串,并获取与输入相同的内容以供进一步执行
EN

Stack Overflow用户
提问于 2017-03-03 12:43:07
回答 2查看 243关注 0票数 0

我尝试回显一个字符串,并通过将回显的字符串作为输入来使用base64进行编码。

代码语言:javascript
复制
Write-Host "Hello World" | $b = [System.Convert]::FromBase64String($_) ; [System.Text.Encoding]::UTF8.GetString($b)

但是为了降低误差,

代码语言:javascript
复制
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

你有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2017-03-03 13:16:22

这意味着您试图通过管道传递到的函数不接受管道。

您将需要使用变量来传递给函数。

例如:

代码语言:javascript
复制
// convert string to base64
$a = "Hello World"
$b = [System.Text.Encoding]::UTF8.GetBytes($a)
$c = [System.Convert]::ToBase64String($b)
Write-Host $c
票数 1
EN

Stack Overflow用户

发布于 2017-04-14 03:41:45

您可以使用Write-output并通过管道将其发送到New-Variable

代码语言:javascript
复制
Write-output "test" | New-Variable -Name b
$b = [System.Convert]::FromBase64String($b)
[System.Text.Encoding]::UTF8.GetString($b)

您还可以为以下内容创建函数:

代码语言:javascript
复制
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的倍数的字符串。(我想这只是一个不太好的例子)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42570825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档