Use the Get-Help cmdlet to display comment-based help in the same format

后端 未结 3 1866
Happy的楠姐
Happy的楠姐 2021-02-18 17:50

I am trying to use the Get-Help cmdlet to display comment-based help in the same format in which it displays the cmdlet help topics that are generated from XML files. The abilit

3条回答
  •  别那么骄傲
    2021-02-18 18:14

    It works, you just gotta make sure you have the right headings. I've always put the comment block right above the function too. I'm not sure if it's supposed to work inside of the function or not.

    Below is an example of one of my functions that has a working doc help.

    ##############################################################################
    #.SYNOPSIS
    # Gets a COM object from the running object table (ROT) similar to GetObject
    # in Visual Basic.
    #
    #.DESCRIPTION
    # To maintain consistency with New-Object this cmdlet requires the -ComObject
    # parameter to be provided and the TypeName parameter is not supported.
    #
    #.PARAMETER TypeName
    # Not supported, but provided to maintain consistency with New-Object.
    #
    #.PARAMETER ComObject
    # The ProgID of a registered COM object, such as MapPoint.Application.
    #
    #.PARAMETER Force
    # If an existing object is not found, instead of writing an error, a new
    # instance of the object will be created and returned.
    #
    #.EXAMPLE
    # $olMailItem = 0
    # Get-Object -ComObject Outlook.Application | %{$_.CreateItem($olMailItem).Display()}
    ##############################################################################
    function Get-Object {
    
        [CmdletBinding(DefaultParameterSetName='Net')]
        param (
    
            [Parameter(ParameterSetName='Net', Position=1, Mandatory=$true)]
            [String]$TypeName,
    
            [Parameter(ParameterSetName='Com', Mandatory=$true)]
            [String]$ComObject,
    
            [Parameter()]
            [Switch]$Force
    
        )
    
        if ( $TypeName ) { throw '-TypeName is not supported. Use -ComObject instead.' }
    
        if ( $ComObject ) { 
            try {
                [System.Runtime.InteropServices.Marshal]::GetActiveObject($ComObject)
            }
            catch [System.Management.Automation.MethodInvocationException] {
                if ( $Force ) { New-Object -ComObject $ComObject }
                else { Write-Error "An active object of type $ComObject is not available." }
            }
        }
    
    }
    

提交回复
热议问题