gpt4 book ai didi

powershell - PowerShell 中的参数绑定(bind)问题

转载 作者:行者123 更新时间:2023-12-02 17:29:07 25 4
gpt4 key购买 nike

我有这个 PowerShell cmdlet:

function Test-ParameterBinding {
#
# .SYNOPSIS
# Tests parameter binding.
#
[CmdletBinding()]
param (

[Parameter(ParameterSetName = 's1', Mandatory = $true)]
[int] $P1,

[Parameter(ParameterSetName = 's1')]
[Parameter(ParameterSetName = 's2', Mandatory = $true)]
[string] $P2,

[Parameter(ParameterSetName = 's1')]
[Parameter(ParameterSetName = 's3', Mandatory = $true)]
[bool] $P3
)
process { $PSCmdlet }
}

以下是此 cmdlet 的帮助:

SYNTAX
Test-ParameterBinding -P1 <Int32> [-P2 <String>] [-P3 <Boolean>] [<Com…

Test-ParameterBinding -P2 <String> [<CommonParameters>]

Test-ParameterBinding -P3 <Boolean> [<CommonParameters>]

查看代码和帮助,我想我可以像这样使用 cmdlet:

Test-ParameterBinding -P2 'Bind to param set s2'
Test-ParameterBinding -P3 $true # Bind to param set s3

但是对于这两个我得到:

Parameter set cannot be resolved using the specified named parameters.
<小时/>

问题 1:在我的两种情况下,PowerShell 是否应该能够绑定(bind)到参数集 s2s3

这意味着没有时间为 PowerShell 版本 2 实现它,或者他们没有发现这个问题。

问题2:我的推理有问题吗?在这些情况下参数绑定(bind)会失败吗?

<小时/>

我在 PowerShell documentation 中发现了可能与我的问题直接相关的内容。 :

There is one case where Windows PowerShell cannot use the default parameter set even if a default parameter set name is specified. The Windows PowerShell runtime cannot distinguish between parameter sets based solely on object type. For example, if you have one parameter set that takes a takes a string as the file path, and another set that takes a FileInfo object directly, Windows PowerShell cannot determine which parameter set to use based on the values passed to the cmdlet, nor does it use the default parameter set. In this case, even if you specify a default parameter set name, Windows PowerShell throws an ambiguous parameter set error message.

最佳答案

你的逻辑是正确的,Powershell应该能够根据你的函数定义和示例用法找出参数集。

显然 Powershell v2 根本没有足够强大的逻辑来实现这一点。不过,它在 Powershell v3 中按预期工作,这进一步证实了它是 v2 中的缺点/错误。

关于powershell - PowerShell 中的参数绑定(bind)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12500632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com