2010-03-02 8 views

답변

4

저는 모듈의 일부인지 여부에 관계없이 cmdlet 및 함수에 대한 MAML을 생성하는 Powershell 스크립트를 만들었습니다. 생성 된 MAML에서 일부 수동 편집이 필요하지만 참조한 cmdlet 도움말 편집기도 마찬가지이므로 완벽하지는 않습니다. 나는 그것에 관하여 블로그 포스트가있다 here

당신이 그것을 사용하고 수정을 찾아내는 경우에 the script on PoshCode를 자유롭게 상상하십시오.

+0

내 모듈이 바이너리임을 나타내야합니다. 그것은 정말로 올바른 방향으로 가고 있지만, 포스트에 감사드립니다. –

+0

문제 없습니다. MAML을 생성하기 위해 CommandInfo 또는 FunctionInfo를 키 조작하고 있기 때문에 이진 모듈에서도 여전히 작동해야합니다. –

1

내 모듈을 문서화해야하고 내 자신의 MAML 도움말 작성기를 만드는 것보다 더 나은 솔루션을 찾지 못했습니다. 여기에 있습니다 : https://github.com/nightroman/Helps

이 모듈은 PowerShell 도움말 스크립트에서 PowerShell MAML 도움말 파일을 빌드합니다. 도움말 스크립트는 거의 WYSIWYG이며 결과 도움말과 매우 유사합니다. 여전히 스크립트 일 뿐이므로 많은 유용한 기능을 쉽게 사용할 수 있습니다. 그 중 하나는 여러 문화권에 대한 도움말 파일을 작성하는 것입니다. 나는 스냅인/모듈 C# 코드에서 문서를 삽입 할 수있는 방법에 찾아 봤는데

### 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

과 : 여기

명령 (cmdlet을, 함수, 스크립트)와 공급자에 대한 도움말 데이터의 템플릿입니다 PoshBuild이 내 최고의 옵션처럼 보입니다. 일부 문서 요소 (예 : 개요 및 예제)를 포함 할 수있는 방법을 제공하지는 않지만 여전히 좋은 선택입니다. 당신이 사용할 수있는 편집 XML의 PowerShell을 도움말 (PSMAML)를위한 그래픽 도구의 측면에서

0

오픈 소스 XmlDoc2CmdletDoc의 출현과 함께, 당신은 지금 (즉, C#으로 작성된 것) 단지 cmdlet을 스크립트, 그냥 같은 다른 C#을 라이브러리 같은 (그 서면 당신의 PowerShell cmdlet을 문서화 할 수 PowerShell에서) : 인라인 설명서 주석을 사용하십시오.

더 이상 수동으로 파일 MAML을 유지해야 할 필요가 없습니다. 빌드를 계측하여 C# 프로젝트를 다시 컴파일 할 때 문서 생성기를 실행하고 모듈을 모두 얻도록하십시오. dll모듈. dll-Help.xml. 후자는 Get-Help을 호출 할 때 PowerShell에서 직접 사용하여 cmdlet에 대한 도움말을 제공합니다.

그리고 XmlDoc2CmdletDoc은 -strict 스위치를 제공하기 때문에 cmdlet을 포괄적으로 문서화 할 수 있습니다. 스위치를 사용하고 뭔가를 놓친 경우 빌드가 실패합니다. 자동 XmlDoc2CmdletDoc에서 제공

다른 장점 (이 목록에 "절은"Get-Help 제시 도움의 부분을 말한다) :

  • 출력의 각 사용자 정의 유형이 섹션에 대한 설명이 포함되어 있습니다.
  • 구문 섹션에는 열거 형에 가능한 값이 포함되어 있습니다.
  • 매개 변수 섹션에는 열거 형에 가능한 값이 포함되어 있습니다.
  • 별칭은 매개 변수 섹션에 자동으로 기록됩니다.
  • 별칭은 일류 매개 변수로 처리되므로 별칭에 대한 도움을 요청할 수 있습니다.
  • 입력 섹션의 매개 변수에 대해 다른 설명을 사용할 수도 있습니다 (매개 변수 섹션 참조).
  • 웹 링크는 실시간 연결의 사후 처리를 위해 자동으로 태그 다운 형식으로 렌더링됩니다. (이 향상된 기능이 보류 중입니다.)

나는이 오픈 소스 유틸리티가 너무 좋아서 위와 같은 여러 가지 이점을 제공하기 시작했습니다. 그리고 Simple-Talk.com에 게시 된 Documenting Your PowerShell Binary Cmdlets이라는 제목의 사용 설명서를 작성했습니다.