1

文字列をパラメータとして受け取るメソッドがあります。この文字列は値と連結されます。処理の最後に、完全な連結文字列が必要です

function MyFunction()
{
    Param ($output)

    $msg = "x " #say this x was different per call
    $output += $msg
}

$output = "start "
MyFunction -output $output
MyFunction -output $output
MyFunction -output $output

Write-Host $output

出力

"start "

期待される

"start 1 2 3 "

[ref]を使用して調べましたが、これは値型に適用され、参照型には適用されません。

アップデート

さまざまな名前の変数を関数に渡すにはどうすればよいですか。

$output1 = "start1 "
$output2 = "start2 "

MyFunction -output $output1
MyFunction -output $output2

WriteHost($output1)
WriteHost($output2)

期待する結果

start1....MyFunction内から追加start2....MyFunction内から追加

4

1 に答える 1

4

関数内では、スクリプトの他の部分と同じスコープにはありません。したがって、$ script:outputを使用して$ outputを更新するときに、スクリプトスコープを指定する必要があります。

$output= "start "
function MyFunction()
{
    Param ($output)

    $msg = "x " #say this x was different per call
    $script:output+=$msg


}


MyFunction -output $output
MyFunction -output $output
MyFunction -output $output

Write-Host $output
于 2013-01-04T10:29:15.363 に答える