1

start-job に渡された入力が消える理由がわかりません。1 つのスクリプトに次のコードがあります。

$data = "some test string data"
Start-Job -FilePath ".\Tasks.ps1" -InputObject $data

そして、スクリプトでは、すぐに呼び出さない限りオブジェクトtasks.ps1の null 値を取得しますが、呼び出し後には消えます。$input

$input #displays the data
$input #null

すぐに別の変数 ( ) に代入しようとしまし$newvalue = $inputたが、その変数の値も null と表示されます。

ここで何が欠けていますか?入力データを保持するにはどうすればよいですか?

4

1 に答える 1

1

わかりました、私は問題を見つけました。$input オブジェクトは、ジョブで呼び出されたときに ReadToEnd であると想定しているPilelineReaderとして渡されます。$input を変数に割り当てると、値の代わりに PipeLineReader が送信されます。これを回避するために、私はこれを使用しました:

[string]$newData = $input

これにより、オブジェクトにアクセスするときに読み取りアクションが発生するのを防ぐことができました。

于 2013-01-31T04:48:07.047 に答える