2

我正在尝试使用 ActiveBatch ExecutePowerShellScript作业步骤将 a 转换System.Byte[]为字符串。ActiveBatch 作业步骤有一个属性来指定InputObjects,我将其设置为上一个作业步骤的输出(这只是作业步骤编辑器中的一个字段,而不是 PowerShell 代码)。然后您显然可以访问$input在 PowerShell 脚本中调用的变量。

只需$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.PipelineReader1+d__0[[System.Object, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]”转换为“System.Management.Automation.Runspaces.PipelineReader 1+d__0 。字节[]”。

有任何想法吗?

4

1 回答 1

3
$bytes = $input | Select-Object
[System.Text.Encoding]::ASCII.GetString($bytes)

显然你必须使用Select-Object,并且字节数组是以 ASCII 而不是 unicode 的形式出现的。

于 2012-05-24T14:09:48.600 回答