さまざまな状況でリモートとローカルの両方で実行しているスクリプトがあります。遠隔地の状況では、いくつかの追加の仕事情報を返したいと思います。ただし、スクリプトは、再起動、ログオフなどで完了する必要もあります。
ただし、Iの場合Return $Results
、次のコードは実行されません。一方、Write-Host
情報を返すと、それはジョブの追加データと見なされ、次のスクリプト完了コードは引き続き実行できます。
私はこれを機能させることができますが、2つの問題が発生します。
Write-Host
私はのクラッジを使用してから$value1|$value2
、|で文字列を分割する必要があります。2ビットのデータを取得します。Write-Host
コンソールを多少汚染するので、それを管理するために追加のコードが必要です。中間情報を返し、実行を継続する方法はありますか?それとも私はWrite-Host
ルートに行くしかないのでしょうか?それとも、Write-Host
ハックよりも優れた別のアプローチはありますか?
return
関数(?)が何かを返すようにするには、キーワードを使用する必要があるという印象を受けているようです。ただし、PowerShellの動作は少し異なります。PowerShell関数は、キャプチャされていない出力全体を成功出力ストリームに返します。return
キーワードだけでは、特定の時点での関数の戻り値を作るためです。
違いはありません
function Foo {
return 'something' # return with value
}
そして
function Foo {
'something'
return # echo first, then return
}
そして
function Foo {
'something' # just echo, return implicitly
}
そうすれば、関数に出力を生成させてから、実際に戻る前にさらに多くのことを行うことができます。
function Foo {
'foo'
'bar'
Get-ChildItem . -Recurse | Out-Null # output not returned (suppressed)
'baz' > 'C:\some.txt' # output not returned (redirected to file)
}
'foo', 'bar'
ただし、呼び出し元は、関数呼び出しが戻った後にのみ、戻り値(この場合)を受け取ります。すぐにフィードバックが必要な場合は、他の手段が必要になります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加