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

时间:2016-08-30 23:59:14

标签: powershell

有很多问题涉及到解决PowerShell没有将whatif传播到子函数这一事实。 comment on this answer甚至提到了记录的Connect问题,但问题似乎已经消失。

PowerShell 5中肯定不再存在这个问题,因为这个例子输出了#34; 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

然而,当修复时,它并不清楚。我无法找到超过5的更改日志,但没有提及此问题。有谁知道哪个版本的PowerShell修复了这个问题?

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

1 个答案:

答案 0 :(得分:1)

@PetSerAl和@LachieWhite的注释表明,自PowerShell 2.0起,该问题似乎已修复。

不幸的是,该版本Windows Management Framework的发行说明的下载链接为no longer working。它似乎在Scribd上,但是我没有帐户。 (有人吗?)

除非您确定要生产的版本较低,否则我认为可以安全地按预期工作。