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
Summary

As automation becomes more business-critical, DIY scripts can create hidden responsibilities around security, governance, maintenance, and scalability. This article explores the real cost of managing automation in-house and when a dedicated platform can help IT teams reduce that burden and scale more reliably.

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