Skip to content
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