PowerShell リモート処理を使用してリモート コードを実行しようとしていますが、説明できない奇妙な動作が発生します。これは私が実行する一連のコマンドです。
$sb1 = {$r1 = 1; $r2 = 2; $r3 = Get-Culture; return $r3}
$sb2 = {1; 2; $r3 = Get-Culture; return $r3}
$session = New-PSSession -ComputerName $comp -Credential $creds
$ret1 = Invoke-Command -Session $Session -ScriptBlock $sb1
$ret2 = Invoke-Command -Session $Session -ScriptBlock $sb2
$ret1
>>> en-US
$ret2
>>> 1
この動作の理由を知っている人はいますか? とても奇妙だと思います。return ステートメントは無視され、scriptblock は最初の「キャプチャされていない」式に評価されます。うーん?
また、このブロックを常に return ステートメント、または最後のステートメントに評価したい場合、それを達成する方法を誰かが知っていますか?