【发布时间】:2018-04-07 09:56:05
【问题描述】:
我在这里读到,当您在 powershell 中运行外部命令时,它们的输出总是被解释为字符串或字符串数组:https://stackoverflow.com/a/35980675/983442
我正在尝试处理来自外部命令的二进制输出,但似乎 PowerShell 只能给我字符串。
这让我想知道,使用什么编码将二进制数据转换为字符串?而且,它如何解释换行符以将二进制数据划分为字符串数组?它似乎仅在 \n 字符上分裂,但我确信它也会在 \r\n 上分裂。
是否有可靠的方法来获取 powershell 给我的字符串并将它们转换回字节数组?
例如,假设我有一个包含以下内容的批处理文件,将其命名为thing.bat:
@echo off
type image.jpg
然后我运行以下 powershell:
PS> $x = & .\thing.bat
PS> $x.gettype()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
PS> $x[0].gettype()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String System.Object
PS> $x.count
36
拥有$x 变量后,如何在PowerShell 中可靠地重新创建此image.jpg?
【问题讨论】:
-
想解释否决票?
-
我可以想象反对者想看一些示例代码。此外,这似乎是每个用户都应该通过尝试自己回答的问题。但是我认为这是一个有用的问题,但也希望看到一些示例命令及其输出。
-
你最好加个例子,我们可以测试一下……
-
@Clijsters 我已经编辑了我的问题。
-
一件事是使用
Out-File(您可以在其中设置-Encdoding和通过例如Get-Content -Encoding OEM读回它
标签: shell powershell encoding pipeline