首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >执行Base64命令返回错误?

执行Base64命令返回错误?
EN

Server Fault用户
提问于 2016-05-20 23:03:35
回答 2查看 13.8K关注 0票数 6

我需要一个通过PowerShell执行CLI命令的简单测试用例,该命令已经在Base64中编码。

假设Get-ChildItem已提前转换为Base64字符串R2V0LUNoaWxkSXRlbQ==

此外,假设我打开了一个DOS CLI实例,并希望测试在powershell中执行此字符串:

代码语言:javascript
运行
复制
C:>\ powershell.exe -enc R2V0LUNoaWxkSXRlbQ==

但是,我收到以下错误:

代码语言:javascript
运行
复制
The term '???????' 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:8
*??????? <<<<
    + CategoryInfo        :ObjectNotFound: (???????:String) [], CommandNotFoundException
    + FullyQualifiedErrorID: CommandNotFoundException

我知道有一种方法可以引入变量的使用,甚至包括编码过程本身。但我想知道的是,这个方法可行吗?我可能做错什么了?我正在Win7中运行PS2.0版本。

EN

回答 2

Server Fault用户

回答已采纳

发布于 2016-05-21 03:41:14

如果必须对其进行编码,请使用以下方法获取Base64字符串:

代码语言:javascript
运行
复制
[Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes('Get-ChildItem'))

这对我来说很管用:

代码语言:javascript
运行
复制
powershell.exe -encodedCommand RwBlAHQALQBDAGgAaQBsAGQASQB0AGUAbQA=
票数 8
EN

Server Fault用户

发布于 2016-12-02 20:55:30

要添加到@SomethingElse的答案中,不工作的Base64字符串与其工作的Base64字符串之间的区别是,在将原始字符串转换为字节值时使用的字符编码。

它需要被编码为UTF-16-LE,然后转换为Base64以便PowerShell喜欢它,而您的编码为UTF 8/平原ASCII。

代码语言:javascript
运行
复制
# Your version, with 1-byte-per-character encoding:
PS> [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes('Get-ChildItem'))
R2V0LUNoaWxkSXRlbQ==

# Working version, with 2-bytes-per-character encoding:
PS> [Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes('Get-ChildItem'))
RwBlAHQALQBDAGgAaQBsAGQASQB0AGUAbQA=
票数 4
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/778123

复制
相关文章

相似问题

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