en-US/about_PSDocs_Keywords.help.txt
TOPIC
about_psdocs_keywords SHORT DESCRIPTION Describes the language keywords that can be used within PSDocs document definitions. LONG DESCRIPTION PSDocs lets you generate dynamic markdown documents using PowerShellblocks. To generate markdown a document is defined inline or within script files by using the document keyword. - Document - A named document definition - Section - A named section - Title - Sets the document title - Code - Inserts a block of code - Note - Inserts a note using DocFx formatted markdown (DFM) - Warning - Inserts a warning using DocFx formatted markdown (DFM) - Table - Inserts a table from pipeline objects - Yaml - Inserts a YAML header document Defines a named block that can be called to output documentation. The document keyword can be defined inline or in a separate script file. Syntax: Document [-Name] <String> [-Body] <ScriptBlock> - Name - The name of the document definition. - Body - A definition of the markdown document containing one or more PSDocs keywords and PowerShell. Examples: # A document definition named Sample Document 'Sample' { # Define the document here } # Generate markdown from the document definition Invoke-PSDocument -Name 'Sample' -InputObject ''; section Creates a new document section block containing content. Each section will be converted into a header. Syntax: Section [-Name] <String> [-When <ScriptBlock>] [-Body] <ScriptBlock> - Name - The name or header of the section. - When - A condition to determine if the section block should be included in the markdown document. Examples: # A document definition named Sample Document 'Sample' { # Define a section named Introduction Section 'Introduction' { # Content of the Introduction section 'This is a sample document that uses PSDocs keywords to construct a dynamic document.' # Define more section content here } } # Generate markdown from the document definition Invoke-PSDocument -Name 'Sample' -InputObject ''; ## Introduction This is a sample document that uses PSDocs keywords to construct a dynamic document. # A document definition named Sample Document 'Sample' { # Sections can be nested Section 'Level2' { Section 'Level3' { # Define level 3 section content here } # Define more level 2 section content here } } # Generate markdown from the document definition Invoke-PSDocument -Name 'Sample' -InputObject ''; ## Level2 ### Level3 # A document definition named Sample Document 'Sample' { # By default each section is included when markdown in generated Section 'Included in output' { # Section and section content is included in generated markdown } # Sections can be optional if the When parameter is specified the expression evaluates to $False Section 'Not included in output' -When { $False } { # Section and section content is not included in generated markdown } } # Generate markdown from the document definition Invoke-PSDocument -Name 'Sample' -InputObject ''; ## Included in output title You can use the Title statement to set the title of the document. Syntax: Title [-Content] <String> - Content - Set the title for the document. Examples: # A document definition named Title Document 'Title' { # Set the title for the document Title 'An example document' } # Generate markdown from the document definition Invoke-PSDocument -Name 'Title' -InputObject $Null; Generates a new Title.md document containing the heading An example document . code You can use the Code statement to generate fenced code sections inmarkdown. An info string can optionally be specified using the -Info parameter. Syntax: Code [-Info <String>] [-Body] <ScriptBlock> - Info - An info string that can be used to specify the language of the code block. Examples: # A document definition named CodeBlock Document 'CodeBlock' { # Define a code block that will be rendered as markdown instead of being executed Code { powershell.exe -Help } } # Generate markdown from the document definition Invoke-PSDocument -Name 'CodeBlock' -InputObject $Null; Generates a new CodeBlock.md document containing the powershell.exe -Help command line. # A document definition named CodeBlockWithInfo Document 'CodeBlockWithInfo' { # Define a code block that will be rendered in markdown as PowerShell Code powershell { Get-Item -Path .\; } } # Generate markdown from the document definition Invoke-PSDocument -Name 'CodeBlockWithInfo' -InputObject $Null; Generates a new Test.md document containing script code formatted with the powershell info string. # A document definition named CodeBlockFromPipeline Document 'CodeBlockFromPipeline' { # Execute Get-Help then create a code block from the output of the Get-Help command Get-Help 'Invoke-PSDocument' | Code } # Generate markdown from the document definition Invoke-PSDocument -Name 'CodeBlockFromPipeline' -InputObject $Null; note Creates a block quote formatted as a DocFx Formatted Markdown note. Syntax: Note [-Body] <ScriptBlock> Examples: # A document definition named NoteBlock Document 'NoteBlock' { # Define a note block Note { 'This is a note.' } } # Generate markdown from the document definition Invoke-PSDocument -Name 'NoteBlock' -InputObject $Null; > [!NOTE] > This is a note. Generates a new NoteBlock.md document containing a block quote formatted as a DFM note. warning Creates a block quote formatted as a DocFx Formatted Markdown warning. Syntax: Warning [-Body] <ScriptBlock> Examples: # A document definition named WarningBlock Document 'WarningBlock' { Warning { 'This is a warning.' } } # Generate markdown from the document definition Invoke-PSDocument -Name 'WarningBlock' -InputObject $Null; > [!WARNING] > This is a warning. Generates a new WarningBlock.md document containing a block quote formatted as a DFM warning. table Creates a formatted table from pipeline objects. Syntax: Table [-Property <String[]>] - -Property - Filter the table to only the named columns. Examples: # A document definition named Table Document 'Table' { Section 'Directory list' { # Create a row for each child item of C:\ Get-ChildItem -Path 'C:\' | Table -Property Name,PSIsContainer; } } # Generate markdown from the document definition Invoke-PSDocument -Name 'Table'; ## Directory list |Name|PSIsContainer| | --- | --- | |Program Files|True| |Program Files (x86)|True| |Users|True| |Windows|True| Generates a new Table.md document containing a table populated with a row for each item. Only the properties Name and PSIsContainer are added as columns. metadata Creates a metadata header, that will be rendered as yaml front matter. Multiple Metadata blocks can be used and they will be aggregated together. Syntax: Metadata [-Body] <Hashtable> Examples: # A document definition named MetadataBlock Document 'MetadataBlock' { # Create a Metadata block of key value pairs Metadata @{ title = 'An example title' } Metadata @{ author = $Env:USERNAME 'last-updated' = (Get-Date).ToString('yyyy-MM-dd') } # Additional text to add to the document 'Yaml header may not be rendered by some markdown viewers. See source to view yaml.' } # Generate markdown from the document definition Invoke-PSDocument -Name 'MetadataBlock'; Generates a new MetadataBlock.md document containing a yaml front matter.An example of the output generated is available . EXAMPLES Document 'Sample' { Section 'Introduction' { 'This is a sample document that uses PSDocs keywords to construct a dynamic document.' } Section 'Generated by' { "This document was generated by $($Env:USERNAME)." $PSVersionTable | Table -Property Name,Value } } # Generate markdown from the document definition Invoke-PSDocument -Name 'Sample'; NOTE An online version of this document is available at https://github.com/Bernie hite/PSDocs/blob/master/docs/keywords/PSDocs/en-US/about_PSDocs_Keywords.md. SEE ALSO - KEYWORDS - Document - Section - Title - Code - Note - Warning - Table - Yaml |