在 PowerShell 中强制使用



我试图使参数成为强制性的,但前提是另一个参数使用某些 ValidateSet 值。 似乎在强制使用代码块无法按预期工作。

function Test-Me {
    [CmdletBinding()]
    Param (
        [Parameter()]
        [ValidateSet("NameRequired", "AlsoRequired")]
        [string]
        $Type = "NoNameRequired",
        [Parameter(Mandatory = {-not ($Type -eq "NoNameRequired")})]
        [string]
        $Name
    )
    Process {
        Write-Host "I ran the process block."
        Write-Host "Type = '$Type'"
        Write-Host "Name = '$Name'"
        Write-Host "Name Parameter Mandatory? = '$(-not ($Type -eq "NoNameRequired"))'"
    }
}
Set-StrictMode -Version Latest
function Test-Me {
    [CmdletBinding(DefaultParameterSetName = "Gorgonzola")]
    Param (
        [Parameter(Mandatory)]
        [int]
        $Number,
        [Parameter(Mandatory, ParameterSetName = "NameNeeded")]
        [ValidateSet("NameRequired", "AlsoRequired")]
        [string]
        $Type = "NoNameRequired",
        [Parameter(Mandatory, ParameterSetName = "NameNeeded")]
        [string]
        $Name
    )
    Process {
        Write-Host "I ran the process block."
        Write-Host "Number = '$Number'"
        Write-Host "Type = '$Type'"
        Write-Host "Name = '$Name'"
        Write-Host "Name Parameter Mandatory = '$(-not ($Type -eq "NoNameRequired"))'"
    }
}
参数

集似乎有助于模拟条件强制参数。

如果给定了类型名称参数,我可以做到它们都是必需的。 无论函数中的其他参数如何,都会发生这种情况,例如上面的同级数字参数。

我将默认参数集名称设置为随机名称;我通常指定"无"。 该参数集名称不需要实际存在,再次由 Number 参数指示。

无论您的严格模式设置如何,所有这些都有效。

相关内容

  • 没有找到相关文章

最新更新