Question:
How do I get my PowerShell script to display help when a user requests help via:
1 2 |
Get-Help -Name myscript.ps1 |
or
1 2 |
myscript.ps1 -? |
For example, to describe my scripts parameters etc.
Updated question
I tried the suggested answers. But I don’t see the expected output.
I simply place added the following code to myScript.ps1.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<# .SYNOPSIS A short description of your script. .DESCRIPTION A longer description of your script. .PARAMETER <-silent> First parameter is -silent. It will do Collection Bootstrap silently. .PARAMETER Second parameter is action. Action could be either bootstrap or join #> |
When I tired
Get-Help .\myScript.ps1
, it shows as follows
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
NAME C:\es\dev\myScript.ps1 SYNOPSIS A short description of your script. SYNTAX C:\es\dev\myScript.ps1 [ DESCRIPTION A longer description of your script. RELATED LINKS REMARKS To see the examples, type: "get-help C:\es\dev\myScript.ps1 -examples". For more information, type: "get-help C:\es\dev\myScript.ps1 -detailed". For technical information, type: "get-help C:\es\dev\myScript.ps1 -full". |
I was expecting to see the description of the parameters. I tried both.PARAMETER <-silent> and .PARAMETER -silent. Same results. What is wrong?
Related question update 2 after processing more
I can see the help file after adding parameter section as follows:-
1 2 3 4 5 6 |
param ( [Parameter(ParameterSetName='taskJsonFile', Position=1, Mandatory=$true)] [String]$taskJsonFile="tasks.json" ) |
But very important to see full help file I must use
Get-help .\myscript.ps1 -full
Otherwise, it doesn’t show full help information.
But here comes my next question. When I tried -full. It shows some irrelevant information. I would like to omit this information to be shown to the user. Now it displays as following:-
NAME
C:\es\dev\myscript.ps1SYNOPSIS
It performs Collection Bootstrapping silently or parameterized based.SYNTAX
C:\es\dev\myscript.ps1 [[-action] ] [[-file] ] [[-sasHostname] ] []DESCRIPTION
For silent operation, user has to fill configuration file with desired value at Eurostep.SAS.Collection Bootstrap.Config.psd1. This
configuration file has to exist in
the same directory of Eurostep.SAS.CollectionBootstrap.ps1 PowerShell script.PARAMETERS
-action
12345678910111213141516171819202122232425262728 Required? falsePosition? 2Default value bootstrapAccept pipeline input? falseAccept wildcard characters? false-fileRequired? falsePosition? 3Default value bootstrap_collection.jsonAccept pipeline input? falseAccept wildcard characters? false-sasHostnameRequired? falsePosition? 4Default value http://localhost:5000Accept pipeline input? falseAccept wildcard characters? falseThis cmdlet supports the common parameters: Verbose, Debug,ErrorAction, ErrorVariable, WarningAction, WarningVariable,OutBuffer, PipelineVariable, and OutVariable. For more information, seeabout_CommonParameters (https:/go.microsoft.com/fwlink/?LinkID=113216).INPUTS
OUTPUTS
123456789101112131415 -------------------------- EXAMPLE 1 --------------------------C:\PS>.\myscript.ps1For silent Collection Bootstrapping no parameter. It reads values from configuration file myscript.Config.psd1-------------------------- EXAMPLE 2 --------------------------C:\PS>.\myscript.ps1 bootstrap bootstrap_collection.json 'http://localhost:5000'All required parameter provided. Note that hostname must be inside ' '. Because it is a link.RELATED LINKS
I don’t want to show RELATED LINKS INPUTS OUTPUTS , etc.
Is there anyway to remove them from help informtion. Even -Full is used?
Answer:
The simplest way to do this is to add comment-based help to your script. This is a special comment block that is formatted with specific keywords and then the associated text for those keywords. For example:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<# .SYNOPSIS A short description of your script. .DESCRIPTION A longer description of your script. .PARAMETER SomeParameter A description of the SomeParameter parameter. .PARAMETER OtherParameter A description of the OtherParameter parameter. Have as many of these lines as you have parameters. .EXAMPLE YourScript.ps1 -SomeParameter 'thing' -OtherParameter 1 Does something. Have as many examples as you think useful. #> |
These are the keywords I tend to use by default but look at the full list described here for others you might want to include: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_comment_based_help?view=powershell-5.1