2

メイン コードの本体で使用するのと同じ関数をバックグラウンド プロセスで使用したいと考えています。

このように書くと、「追加」機能はバックグラウンド処理では機能しますが、メインコードでは使用できません。

$add = { function add($a,$b) { return $a+$b } }
$job = Start-Job -Name "test" -ArgumentList @(2,4) -InitializationScript $add -ScriptBlock { return add $args[0] $args[1] }
sleep 1
Receive-Job -Name "test"
Remove-Job -Name "test" -force
add 2 4

「add」関数定義の周りの {} を削除すると、本体では機能しますが、バックグラウンド プロセスでは機能しません。

$add = function add($a,$b) { return $a+$b }
$job = Start-Job -Name "test" -ArgumentList @(2,4) -InitializationScript $add -ScriptBlock { return add $args[0] $args[1] }
sleep 1
Receive-Job -Name "test"
Remove-Job -Name "test" -force
add 2 4

バックグラウンド プロセスとメイン コードの両方で関数を使用するにはどうすればよいですか?

4

1 に答える 1

1

メインコードで「ライブラリ」スクリプトブロックをドットソースします。

$add = { function add($a,$b) { return $a+$b } }
. $add
add 2 4
于 2012-08-19T01:07:56.123 に答える