术语:我使用脚本化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可以附加相同的属性(例如“Mandatory”),但默认值有点特殊。由于PowerShell参数通常使用C#中的自动实现属性和(在C#6.0之前)C#中自动实现的属性甚至不支持初始化程序,我怀疑可能无法填写该默认值插槽。 (除了SwitchParameters,它实际上确实用“False”填充了默认值,自然就足够了。)
因此,对于已编译的cmdlet,有没有办法通过某种形式的C#代码检测来填写帮助输出中的默认值槽?目前我正在使用C#4.0,但如果不能使用4.0,则可以使用6.0吗?
答案 0 :(得分:0)
我的问题的答案取决于用于生成文档的实用程序,当然。正如我在评论中提到的,我正在使用XmlDoc2CmdletDoc。经过进一步的实验(并查看源代码)后,我发现它确实支持默认值。所有人必须做的是通过支持字段为属性提供初始值,该值将作为默认值出现在生成的帮助中。示例:
private int _quantity = 25;
public int Quantity
{
get { return _quantity; }
set { _quantity = value; }
}
因此,即使不需要支持字段(如本例所示),如果要记录默认值25,也需要引入它。