Skip to content

Add an extended Snippet for Advanced Functions fixes #5197 #5203

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 11 commits into
base: main
Choose a base branch
from
87 changes: 87 additions & 0 deletions snippets/PowerShell.json
Original file line number Diff line number Diff line change
Expand Up @@ -238,6 +238,93 @@
"\t}",
"}"
]
},
"Function-Advanced-Doc": {
"prefix": ["function-advanced-doc", "cmdlet-doc"],
"description": "Script advanced function definition with full comment-based help and parameter attributes.",
"body": [
"function ${1:Verb-Noun} {",
"\t<#",
"\t.SYNOPSIS",
"\tShort description",
"\t.DESCRIPTION",
"\tLong description",
"\t.EXAMPLE",
"\tExample of how to use this cmdlet",
"\t.EXAMPLE",
"\tAnother example of how to use this cmdlet",
"\t.INPUTS",
"\tInputs to this cmdlet (if any)",
"\t.OUTPUTS",
"\tOutput from this cmdlet (if any)",
"\t.NOTES",
"\tGeneral notes",
"\t.COMPONENT",
"\tThe component this cmdlet belongs to",
"\t.ROLE",
"\tThe role this cmdlet belongs to",
"\t.FUNCTIONALITY",
"\tThe functionality that best describes this cmdlet",
"\t#>",
"\t[CmdletBinding(DefaultParameterSetName = 'Parameter Set 1',",
"\t\tSupportsShouldProcess = \\$true,",
"\t\tPositionalBinding = \\$false,",
"\t\tHelpUri = 'http://www.microsoft.com/',",
"\t\tConfirmImpact = 'Medium')]",
"\t[Alias()]",
"\t[OutputType([String])]",
"\tparam (",
"\t\t# Param1 help description",
"\t\t[Parameter(Mandatory = \\$true,",
"\t\t\tValueFromPipeline = \\$true,",
"\t\t\tValueFromPipelineByPropertyName = \\$true,",
"\t\t\tValueFromRemainingArguments = \\$false,",
"\t\t\tPosition = 0,",
"\t\t\tParameterSetName = 'Parameter Set 1')]",
"\t\t[ValidateNotNull()]",
"\t\t[ValidateNotNullOrEmpty()]",
"\t\t[ValidateCount(0, 5)]",
"\t\t[ValidateSet(\"sun\", \"moon\", \"earth\")]",
"\t\t[Alias(\"p1\")]",
"\t\t\\$Param1,",
"",
"\t\t# Param2 help description",
"\t\t[Parameter(ParameterSetName = 'Parameter Set 1')]",
"\t\t[AllowNull()]",
"\t\t[AllowEmptyCollection()]",
"\t\t[AllowEmptyString()]",
"\t\t[ValidateScript({ \\$true })]",
"\t\t[ValidateRange(0, 5)]",
"\t\t[int]",
"\t\t\\$Param2,",
"",
"\t\t# Param3 help description",
"\t\t[Parameter(ParameterSetName = 'Another Parameter Set')]",
"\t\t[ValidatePattern(\"[a-z]*\")]",
"\t\t[ValidateLength(0, 15)]",
"\t\t[String]",
"\t\t\\$Param3",
"\t)",
"",
"\tbegin {",
"\t\t#BeginCodeHere",
"\t}",
"",
"\tprocess {",
"\t\tif (\\$pscmdlet.ShouldProcess(\"Target\", \"Operation\")) {",
"\t\t\t#ProcessCodeHere",
"\t\t}",
"\t}",
"",
"\tend {",
"\t\t#EndCodeHere",
"\t}",
"",
"\tclean {",
"\t\t#CleanCodeHere - Added in 7.3 for more information see https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_functions_advanced_methods?view=powershell-7.5#clean",
"\t}",
"}"
]
},
"Function-Inline": {
"prefix": "function-inline",
Expand Down