gpt4 book ai didi

c# - 如何为已编译 cmdlet 的 PowerShell 帮助中的参数提供默认值

转载 作者:行者123 更新时间:2023-11-30 17:41:07 26 4
gpt4 key购买 nike

术语:我使用脚本化 cmdlet 表示用 PowerShell 编写的 cmdlet,使用编译 cmdlet 表示用 C# 编写的 cmdlet。

使用脚本化的 cmdlet(从 PowerShell V3 开始)可以直接填写 PowerShell 帮助输出中的“默认值”槽。例如,这个函数...

function Do-Stuff([parameter(Mandatory)][string]$Provider="abc") {...}

将允许这个命令...

Get-Help Do-Stuff -parameter Provider

返回这个输出...

-Provider <string>
Required? true
Position? 1
Default value abc
Accept pipeline input? false
Accept wildcard characters? false

编写已编译的 cmdlet,您可以附加相同的属性(例如“强制”),但默认值有些特殊。由于 PowerShell 参数通常使用 C# 中的自动实现属性完成,并且(在 C# 6.0 之前)C# 中的自动实现属性甚至不支持初始化器,我怀疑可能无法填充该默认值插槽。 (除了 SwitchParameters,它实际上确实有默认值填充为“False”,这很自然。)

那么对于已编译的 cmdlet,有没有办法通过某种形式的 C# 代码检测来填充帮助输出中的默认值槽?目前我使用的是 C# 4.0,但如果不能使用 4.0,那么可以使用 6.0 吗?

最佳答案

当然,我的问题的答案取决于用于生成文档的实用程序。正如我在评论中提到的,我正在使用 XmlDoc2CmdletDoc。经过进一步的实验(并查看源代码)后,我发现它实际上支持默认值。所要做的就是通过支持字段为属性提供初始值,该值将作为默认值出现在生成的帮助中。示例:

private int _quantity = 25;

public int Quantity
{
get { return _quantity; }
set { _quantity = value; }
}

因此,即使不需要支持字段(如本示例中所示),如果您希望记录默认值 25,也需要引入它。

关于c# - 如何为已编译 cmdlet 的 PowerShell 帮助中的参数提供默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33421927/

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