2010-03-02 78 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上。