2010-03-02 80 views

回答

4

我创建了一个PowerShell脚本,将生成的cmdlet和功能MAML无论模块是否部分。这并不完美,因为生成的MAML需要一些手动编辑,但您引用的cmdlet帮助编辑器也是如此。我有一个关于它的博客文章here

如果您使用它并查找更正,请随时更新the script on PoshCode

+0

我应该指出我的模块是二进制的。感谢帖子,虽然它确实让我朝着正确的方向前进。 – 2010-03-03 13:49:18

+0

没问题。它应该仍然适用于二进制模块,因为我正在关闭CommandInfo或FunctionInfo来生成MAML。 – 2010-03-03 14:26:42

1

我必须记录我的模块,并没有发现,而不是创建自己的MAML帮助制造商更好的解决方案。它是: https://github.com/nightroman/Helps

模块从PowerShell帮助脚本生成PowerShell MAML帮助文件。 帮助脚本几乎是所见即所得,它们看起来与结果帮助非常相似。 尽管如此,它们只是脚本,这使得许多有用的功能变得简单。 其中之一是建立几种文化的帮助文件。

这里是帮助数据的命令(cmdlet的功能,脚本)和提供的模板:

### Command help data 

@{ 
    command = 'Name' 
    synopsis = '...' 
    description = '...' 
    sets = @{ 
     Set1 = '...' 
     #... 
    } 
    parameters = @{ 
     Param1 = '...' 
     #... 
    } 
    inputs = @(
     @{ 
      type = '...' 
      description = '...' 
     } 
     #... 
    ) 
    outputs = @(
     @{ 
      type = '...' 
      description = '...' 
     } 
     #... 
    ) 
    notes = '...' 
    examples = @(
     @{ 
      title = '...' 
      introduction = '...' 
      code = { 
      } 
      remarks = '...' 
      test = { 
       . $args[0] 
      } 
     } 
     #... 
    ) 
    links = @(
     @{ 
      text = '...' 
      URI = '...' 
     } 
     #... 
    ) 
} 

### Provider help data 

@{ 
    provider = 'Name' 
    drives = '...' 
    synopsis = '...' 
    description = '...' 
    capabilities = '...' 
    tasks = @(
     @{ 
      title = '...' 
      description = '...' 
      examples = @(
       @{ 
        title = '...' 
        introduction = '...' 
        code = { 
        } 
        remarks = '...' 
        test = { 
         . $args[0] 
        } 
       } 
      ) 
     } 
     #... 
    ) 
    parameters = @(
     @{ 
      name = '...' 
      type = '...' 
      description = '...' 
      cmdlets = '...' 
      values = @(
       @{ 
        value = '...' 
        description = '...' 
       } 
       #... 
      ) 
     } 
     #... 
    ) 
    notes = '...' 
    links = @(
     @{ 
      text = '...' 
      URI = '...' 
     } 
     #... 
    ) 
} 
0

我一直在寻找一种方式嵌入在管理单元/模块的C#代码的文件和PoshBuild开始看起来像我最好的选择。它没有提供包含某些文档元素(例如,简介和示例)的方法,但它仍然是一个不错的选择。

0

随着开源XmlDoc2CmdletDoc的出现,您现在可以记录您的二进制 PowerShell命令(即那些用C#编写),就像任何其他C#库,并就像脚本的cmdlet(那些在PowerShell中):使用内联文档注释。

您不再需要手工保持平行MAML文件!只需测试你的版本,这样当你重新编译你的C#项目时,它会执行文档生成器,你将得到一个模块dll模块dll-Help.xml。后者由PowerShell直接用于​​在调用Get-Help时为您的cmdlet提供帮助。

而XmlDoc2CmdletDoc甚至提供了一个-strict开关,以确保您已全面记录您的cmdlet;如果您使用开关并遗漏了某些东西,您的构建将会失败,因为它应该如此。

由XmlDoc2CmdletDoc自动提供其他好处(在此列表中“部分”是指帮助下Get-Help提出的部分):

  • 输出每个自定义类型部分包括描述。
  • 语法部分包含枚举类型的可能值。
  • 参数部分包含枚举类型的可能值。
  • 别名自动记录在参数部分。
  • 别名被视为一流的参数,所以你可以要求别名的帮助。
  • 您可以选择使用不同的说明在输入部分参数如您对参数部分。
  • 网页链接会自动以降价格式呈现,以便对活动链接进行后期处理。 (此增强功能待定)

我喜欢这个开放源码的工具这么多,我开始贡献给它,提供多种的上述好处。我写了一个全面的使用指南,标题为Documenting Your PowerShell Binary Cmdlets,刚发布在Simple-Talk.com上。