问题标签 [parameter-sets]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
121 浏览

powershell - 如何设置参数依赖

到目前为止,我或多或少地避免在我的 PowerShell 脚本中使用参数集,因为我发现它们非常冗长且难以实现复杂的依赖项。
StackOverflow 上有几个类似的问题和答案,但我可以找到适合我情况的可接受的解决方案或解决方法。实际的脚本更加复杂,但这是我卡住了:

参数规则:

  • 至少应提供一个Param#( Param1,Param2或) 参数Param3
  • 只能提供一个Param#( Param1,Param2Param3) 参数
  • 开关 (Switch1Switch2) 是可选的,只能与Param1orParam2参数一起提供(一个或两个)

这意味着以下命令应该会产生错误:

并且应该接受以下命令:

问题在于以下命令:

它会产生一个意外错误:

我想这与@mklement0如何更改参数的抛出消息中提到的这个 github 问题有关?.

但是如何使用参数集充分解决或解决此问题?

0 投票
1 回答
259 浏览

powershell - 执行脚本时Powershell“无法解析参数集”错误

我有一个带有相当长参数集的 powershell 脚本:

我已经根据我的需要测试了这些参数的功能,它工作正常,除了在一种特殊情况下:当我使用参数 SharedElement、OnlyListing 和 Reference 运行脚本时

我总是得到一个错误:

无法使用指定的命名参数解析参数集

但是,当我使用参数 SharedElement、OnlyListing 和 NoLog 运行脚本时,它可以正常工作:

几个月来我一直想知道问题可能是什么,但我一直无法找到解决方案。谁能指出帮助我解决问题的提示?

非常感谢您提前。问候。

0 投票
1 回答
42 浏览

powershell - 如果设置了参数集中的参数之一,则需要所有参数

我想让参数集中的所有参数都是强制性的,但前提是实际指定了其中一个参数(全部或无情况)。所以我希望能够将我的函数称为Test-Mandatory -Param1or 或Test-Mandatory -Param1 -Param2 -Param3. 因此,当我指定 Param2 时,我希望 Param3 是强制性的,反之亦然。

我原以为以下内容可以实现这一目标:

但是,当我使用上述方法时,我不能调用函数 as Test-Mandatory -Param1,因为它会提示我为 param2/param3 提供一个值。我知道我可以添加另一个参数,将其添加到集合中,并使其成为非强制性的,这将使我能够使用开关在参数集之间切换,但我宁愿不这样做。还有另一种方法可以解决我忽略的问题吗?

0 投票
1 回答
568 浏览

powershell - Powershell 两个参数之一是必需的

我写了一个带有一些参数的powershell脚本,但我不知道如何获得类似的语法

脚本.ps1 [A|B] C [D]

script.ps1 [A|B] CEF

script.ps1 [A|B] CG

目标:

  • A或B或两者都通过
  • C 始终是强制性的
  • 如果没有传递其他参数,则使用第一个参数集 -> D 不是强制性的
  • 如果 E 被传递 F 是强制性的,反之亦然(第二个参数集)
  • G 被传递(第三个参数集)

我的脚本看起来像这样

'Get-Help script.ps1' 的结果

所以参数 C - G 看起来不错。但我不知道如何写 A 和 B 的条件。

你有什么主意吗?

0 投票
2 回答
230 浏览

powershell - 位置绑定和参数集

我正在努力理解参数集和位置绑定的行为。这是示例函数。

根据帮助输出,似乎用单个 int 调用函数应该使用 paramset1,用 2 int 调用它应该使用 paramset2,这是我所期望的。

但是,我收到以下输出。

我会期待以下。

如果我们将 param1 的类型更改为字符串,则函数按预期工作。

我对 PS 解释参数集的方式有什么误解?

最终我的问题是,如果第一个参数在集合之间的类型相同,为什么 PS 无法区分具有位置绑定和不同参数计数的 2 个参数集。

0 投票
1 回答
50 浏览

powershell - Powershell - 参数集

我有一个具有以下参数的函数:

我正在尝试完成以下操作:

当我调用 -SendMail 时,NO 参数是强制性的 当我调用 -UseRegions 时,-Region 是强制性的,其余的不是。当我不调用 -UseRegions 时,-Country 是强制性的,其余的则不是。

我一直在玩参数集,但我永远无法解决它。我也不想有一个名为-UseCountry 的额外参数,我想要-UseRegions 来控制-Region 和-Country。

有人有过类似的吗?

非常感谢提前!!!!

0 投票
3 回答
396 浏览

powershell - 管道参数与其他参数的特定组合时“无法解析参数集”

我编写了一个使用四个参数和四个参数集的函数。第一个参数$Path未分配给集合,因此属于所有集合。它也是强制性的,并且是唯一可以从管道传递的参数。但是,当我在管道末尾调用函数时使用其他三个参数的某些组合(所有这些参数都属于四组的某种组合)执行此操作时,我收到一个错误,表明该组不明确。

这是我的功能:

所有可能的参数组合如下:

单独通过管道传递 $Path ,或与这些其他参数组合一起工作正常:

但是这两种组合会导致错误:

这些结果之间的最大区别似乎是$OutputToConsole,这是两个集合中唯一可选的参数。似乎管道强制参数会导致它本身成为强制参数。另一方面,最令人困惑的结果涉及$OutputMode,因为它的两个集合都使用完全强制参数的不同组合。Set B 在同时使用$Pathand时发生$OutputMode,仅此而已。那么它是如何"C:\Test.jpg" | Foo-Bar -OutputMode 1被认为是模棱两可的呢?

我将非常感谢任何可以为我阐明这一点的人。