gpt4 book ai didi

powershell - 海森堡在这里 : Aliases for PowerShell parameters only appear in cmdlet help when you do NOT document the cmdlet

转载 作者:行者123 更新时间:2023-12-03 00:00:44 26 4
gpt4 key购买 nike

在尝试使我的 PowerShell cmdlet(用 C# 编写,未编写脚本)的文档尽可能完整的过程中,我发现了一个有趣的发现。如果我包含正确的 MAML 帮助文件(例如 MyModule.dll-Help.xml),则显示具有一个或多个别名的 cmdlet 参数的帮助可能如下所示:

PS> Get-Help Set-MySetting -param ItemType
-ItemType <ItemTypeChoice>
The type for the item.
Required? false
Position? 4
Default value String
Accept pipeline input? true (ByPropertyName)
Accept wildcard characters? false

另一方面,如果我删除该帮助文件并重新加载我的模块,相同参数的帮助 - 现在只是通过 Get-Help 从代码本身反射(reflect)出来--可能看起来像这样:
PS> Get-Help Set-MySetting -param ItemType
-ItemType <ItemTypeChoice>
The type for the item.
Required? false
Position? 4
Accept pipeline input? true (ByPropertyName)
Parameter set name (All)
Aliases Type, SettingType
Dynamic? false

注意 Aliases 的存在第二种情况下的属性(property),第一种情况下没有属性(property)。

当然,第一时间认为我的 MAML 一定是不正确的。考虑到通过广泛的网络搜索,我还没有找到任何远程的东西,比如 MAML XML 模式的明确来源(!),这种可能性更有可能。但是,如果我的 MAML 不正确,那么用于 PowerShell 自己的核心 cmdlet 的 MAML 也是如此,因为这是我从那里复制它的地方,考虑到它是可靠的来源 (C:\Windows\System32\WindowsPowerShell\v1.0\en-US\Microsoft.PowerShell.Commands.Management.dll-help.xml)。

但问题的关键证据是,即使该文件中的某些 PowerShell 核心 cmdlet 具有别名,它们也不会在您调用 Get-Help 时报告别名!这是一个例子:
PS> Get-Help Add-Computer -param DomainName
-DomainName <String>
Specifies the domain to which the computers are added. This parameter is required when adding the computers to a domain.
Required? true
Position? 1
Default value
Accept pipeline input? false
Accept wildcard characters? false

这是 DomainName 的 MAML 定义的开始。 Add-Computer的参数--注意最后定义的别名:
<command:parameter required="true" variableLength="false"
globbing="false" pipelineInput="false" position="1" aliases="DN,Domain">

因此, Get-Help知道如何在必须通过反射自己完成工作时报告别名,但在 aliases 中提供时无法报告别名 <command:parameter> 的属性.

问题

真正的问题是什么?
  • Get-Help 期望别名位于aliases <command:parameter> 的属性.
  • 给定 MAML 文件时,Get-Help 根本无法在 MAML 中查找别名。

  • 如果 (1),并且有人可以识别指定别名的正确方法,那么对于我自己的 cmdlet,有一个简单的解决方法。如果 (2)... 是时候在 Connect 上提出问题了!

    最佳答案

    我遇到了同样的问题,并且可以通过添加 Aliases 来解决它进入参数<maml:description>部分。

    关于powershell - 海森堡在这里 : Aliases for PowerShell parameters only appear in cmdlet help when you do NOT document the cmdlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30698512/

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