我正在尝试使用ActiveBatch ExecutePowerShellScript 作业步骤将System.Byte[]
转换为字符串。 ActiveBatch作业步骤有一个属性来指定InputObjects
,我将其设置为上一个作业步骤的输出(这只是作业步骤编辑器中的一个字段,而不是PowerShell代码)。然后,您显然可以访问PowerShell脚本中名为$input
的变量..
只有$input
我得到一个转换为整数的字节列表。使用$input | gm
我得到:
There are 25 output objects generated by the Powershell script
TypeName: System.Byte[]
Name MemberType Definition
---- ---------- ----------
Count AliasProperty Count = Length
Address Method System.Byte&, mscorlib, Version=2.0.0.0, Culture...
如果我尝试[System.Text.Encoding]::Unicode.GetString($input)
,我会:
执行PowerShell脚本时遇到异常:找不到重载 对于“GetString”和参数计数:“1”。
如果我尝试[System.Text.Encoding]::Unicode.GetString(,$input)
,我会:
执行PowerShell脚本时遇到异常:在方法中缺少')' 调用
如果我尝试:
[byte[]]$bytes = $input
[System.Text.Encoding]::Unicode.GetString($bytes)
我明白了:
执行PowerShell脚本时遇到异常:无法转换 “System.Management.Automation.Runspaces.PipelineReader
1+<GetReadEnumerator>d__0[System.Object]" value of type "System.Management.Automation.Runspaces.PipelineReader
1 + d__0 [[System.Object的, mscorlib,版本= 2.0.0.0,文化=中性, PublicKeyToken = b77a5c561934e089]]“输入”System.Byte []“。
有什么想法吗?
答案 0 :(得分:2)
$bytes = $input | Select-Object
[System.Text.Encoding]::ASCII.GetString($bytes)
显然你必须使用Select-Object
,字节数组是以ASCII而不是unicode形式出现的。