2

ActiveBatch ExecutePowerShellScriptジョブ ステップを使用しSystem.Byte[]て、a を文字列に変換しようとしています。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」型に変換できません。バイト[]"。

何か案は?

4

1 に答える 1

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

どうやら を使用する必要がSelect-Objectあり、バイト配列は Unicode ではなく ASCII として送信されていました。

于 2012-05-24T14:09:48.600 に答える