Topic: $PSDefaultParameterValues
Notice: This post is a part of the PowerShell Monday series — a group of quick and easy to read mini lessons that briefly cover beginning and intermediate PowerShell topics. As a PowerShell enthusiast, this seemed like a beneficial way to ensure those around me at work were consistently learning new things about Windows PowerShell. At some point, I decided I would share these posts here, as well. Here’s the PowerShell Monday Table of Contents.
Now that we have some understanding about commands, cmdlets, functions, and parameters, we can start to discuss the $PSDefaultParameterValues preference variable. This variable allows you to specify default parameter values for cmdlet or function parameters.
This is to say, that you can ensure a specific parameter value is always used for a specific parameter name, for a specific cmdlet or function, even when you don’t explicitly include them. Let’s say you use the Get-ADComputer cmdlet and you always want to use the DC01 Domain Controller to perform the lookup. That’s probably not the best idea, but without $PSDefaultParameterValues, you’d have to type the parameter each time.
Get-ADComputer -Identity membersrv05 -Server DC01
If we defined a default parameter value, we could drop the -Server DC01 from the command and it would still be included. There’s a couple different ways to add an entry to $PSDefaultParameterValues. We’ll use the Add method this week.
$PSDefaultParameterValues.Add('Get-ADComputer:Server','DC01') $PSDefaultParameterValues Name Value ---- ----- Get-ADComputer:Server DC01
Again, with this value set, the command below would still be certain to use DC01.
Get-ADComputer -Identity membersrv05
While we’re here, let’s also look at the Remove method. This is how we’d remove an already existing entry in the $PSDefaultParameterValues variable.
$PSDefaultParameterValues.Remove('Get-ADComputer:Server')
All gone, and all done. We’ll discuss this topic some more next Monday.