Core 和 Classic PowerShell 中开关块中的 Return 行为不同

Voo*_*Voo 6 powershell powershell-core

以下脚本在 5.1 和 7.4.0 上运行时给出不同的结果。

function foo($x) {
    $val = switch ($x){
        1 { 5 }
        default {
            return 10 
        }
    }
    Write-Host "Val is $val" 
    $val + 1
}

Write-Host "foo 1: $(foo 1)" 
Write-Host "foo 2: $(foo 2)" 
Run Code Online (Sandbox Code Playgroud)

PS 5.1 输出:

Val is 5
foo 1: 6
foo 2: 10
Run Code Online (Sandbox Code Playgroud)

PS 7.4.0 输出:

Val is 5
foo 1: 6    
foo 2:
Run Code Online (Sandbox Code Playgroud)

这是 PS Core 中的错误(这对我来说肯定是出乎意料的)还是这是一个记录在案的更改/始终是未定义的行为?

Voo*_*Voo 0

这是 PowerShell 7.4.0 中的一个错误(有望在下一版本中修复)。

请参阅错误报告。