什么版本的PowerShell修复了"whatif"传播?

Ric*_*lay 8 powershell

有许多问题与解决PowerShell没有传播whatif到子函数这一事实有关.对此答案评论甚至提到了记录的Connect问题,但问题似乎已经消失.

PowerShell 5中肯定不再存在该问题,因为此示例输出"Skipped!" 正如您所期望的那样:

function Outer
{
    [CmdletBinding(SupportsShouldProcess=$true)]
    param()

    Inner
}

function Inner
{
    [CmdletBinding(SupportsShouldProcess=$true)]
    param()

    if ($PSCmdlet.ShouldProcess("Inner"))
    {
        Write-Host "Process!"
    }
    else
    {
        Write-Host "Skipped!"
    }
}

Outer -WhatIf
Run Code Online (Sandbox Code Playgroud)

但是,目前尚不清楚何时修复此问题.我找不到超过5的更改日志,但没有提到问题.有谁知道哪个版本的PowerShell修复了这个问题?

(这个问题似乎无关紧要,但它可以帮助脚本/模块作者选择适当的最小PS版本来运行)

mar*_*sze 1

正如 @PetSerAl 和 @LachieWhite 的评论所示,自 PowerShell 2.0 以来,它似乎已得到修复。

遗憾的是,该版本Windows Management Framework发行说明的下载链接已不再有效。好像在Scribd上,但我没有帐户。(任何人?)

除非您确定生产中使用的是较低版本,否则我认为可以安全地假设该开关将按预期工作。