我正在尝试使用 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 语句,甚至是最后一个语句,有谁知道我可以如何做到这一点?