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",
Comment thread
kilasuit marked this conversation as resolved.
Outdated
"\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,",
Comment thread
kilasuit marked this conversation as resolved.
Outdated
"\t\tPositionalBinding = \\$false,",
"\t\tHelpUri = 'http://www.microsoft.com/',",
Comment thread
kilasuit marked this conversation as resolved.
Outdated
"\t\tConfirmImpact = 'Medium')]",
"\t[Alias()]",
Comment thread
kilasuit marked this conversation as resolved.
Outdated
"\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()]",
Comment thread
JustinGrote marked this conversation as resolved.
"\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