PowerShell Cmdlet Development
Write idiomatic, safe, and maintainable PowerShell aligned with Microsoft guidelines.
Routing Table
| Topic | Reference |
|---|---|
| Naming (verbs, params, variables, aliases) | references/naming.md |
| Parameter design (types, validation, switches) | references/parameters.md |
| Pipeline, output, and PassThru patterns | references/pipeline.md |
| Error handling, ShouldProcess, safety | references/errors.md |
| Style, documentation, and performance | references/style.md |
Key Rules (Always Apply)
- Verb-Noun format with approved verbs (
Get-Verb), PascalCase, singular nouns. [CmdletBinding()]on every function — enables common parameters.[switch]for boolean flags — never[bool], never assign defaults.- Exec form for CMD/ENTRYPOINT in containers, exec form analogy: always use full cmdlet names, never aliases in scripts.
- Non-interactive — no
Read-Host; accept all input via parameters. - Return objects — never formatted text. Use
[PSCustomObject]for structured data. SupportsShouldProcesson any function that modifies state.- Full names — no aliases (
Get-ChildItemnotgci,Where-Objectnot?). - Comment-based help (
.SYNOPSIS,.DESCRIPTION,.PARAMETER,.EXAMPLE) on public functions.