Why 'advanced functions' should be your PowerShell default

Listen to this blog post!

The 2026 Microsoft Automation Benchmark

Find out why 72% of teams can’t scale automation safely. And what it takes to fix it.

Get the free report

Table of contents:

The 2026 Microsoft Automation Benchmark
Find out why 72% of teams can’t scale automation safely. And what it takes to fix it.
Get the free report

Did you know that simple functions could create hidden pitfalls? Advanced functions, created by adding [CmdletBinding()] and param(), ensure full PowerShell compatibility. These functions can utilize helpful features like $PSDefaultParameterValues, enhancing reliability and avoiding debugging issues.

Let advanced functions be your PowerShell default

Unknown to many, PowerShell supports two different types of function:

  • simple functions and
  • advanced functions.

Only advanced functions support all PowerShell features, and if there are no specific reasons why you explicitly want an old simple function, as a safety rule, you should always ensure that all of your functions are advanced functions.

The simplest way to ensure this is to add this to all of your functions:

[CmdletBinding()]

param() 

If you want to define parameters, add them to the param() block. If you want to define special cmdlet features, add them to [CmdletBinding()]. For example, try this to add the ?WhatIf and ?Confirm parameters:

[CmdletBinding(SupportsShouldProcess)]

param() 

From a user perspective, you can always verify that a function is indeed an "advanced function": It supports all the common parameters (i.e. ?Verbose, ?ErrorAction) whereas "simple functions" only support the parameters that you defined yourself.

Extra Tip: Simple functions lack many features that may not be evident at first. For example, they are not compatible with $PSDefaultParameterValues. Avoid simple functions so you dont run in hard-to-debug edge case problems due to not supported internal functionality.

Your ultimate PowerShell Cheat Sheet

Unleash the full potential of PowerShell with our handy poster. Whether you're a beginner or a seasoned pro, this cheat sheet is designed to be your go-to resource for the most important and commonly used cmdlets.The poster is available for download and in paper form.

Get your poster here!

Related links