Q: Once I use cmdlets like Obtain-Job
and Format-Desk
, how do I modify default values of the Maintain and Wrap parameters?
A: Use the $PSDefaultValues
automated variable.
Once I first found PowerShell’s background jobs function, I might use Obtain-Job
to view job output – solely to find it’s now not there. And virtually too usually to rely, I pipe objects to Format-Desk
cmdlet solely to get truncated output as a result of I forgot to make use of -Wrap
. I’m positive you all have parameters whose default worth you’d gladly change – at the least to your setting.
I’m positive you will have seen this (and know how one can use Wrap), like this:
PS> # Default output in a slim terminal window.
PS> Get-Service | Format-Desk -Property Identify, Standing, Description
Identify Standing Description
---- ------ -----------
AarSvc_f88db Operating Runtime for activating conversational …
AJRouter Stopped Routes AllJoyn messages for the native …
ALG Stopped Offers assist for third social gathering protoco…
AppHostSvc Operating Offers administrative companies for I…
...
PS > # Versus this utilizing -Wrap
PS > Get-Service | Format-Desk -Property Identify, Standing, Description -Wrap
Identify Standing Description
---- ------ -----------
AarSvc_f88db Operating Runtime for activating conversational agent
functions
AJRouter Stopped Routes AllJoyn messages for the native
AllJoyn purchasers. If this service is stopped
the AllJoyn purchasers that don't have their
personal bundled routers can be unable to run.
ALG Stopped Offers assist for third social gathering protocol
plug-ins for Web Connection Sharing
AppHostSvc Operating Offers administrative companies for IIS,
for instance configuration historical past and
Utility Pool account mapping. If this
service is stopped, configuration historical past
and locking down recordsdata or directories with
Utility Pool particular Entry Management
Entries won't work.
So, the query is: how one can inform PowerShell to at all times use -Wrap
when utilizing Format-Desk
or Format-Record
? It seems there’s a quite simple method: use the $PSDefaultParameters
automated variable.
The $PSDefaultParameters
automated variable
When PowerShell (and Home windows PowerShell) begins, it creates the $PSDefaultParameters
automated variable. The variable has a sort: System.Administration.Automation.DefaultParameterDictionary. In different phrases, the variable is a Powershell hash desk. By default, the variable is empty if you begin PowerShell.
Every entry on this hash desk defines a cmdlet, a parameter and a default worth for that parameter. The hash desk secret’s the title of the cmdlet, adopted by a colon (:
), after which the title of the parameter. The hash desk worth for this secret’s the brand new default worth for the parameter.
Should you needed, for instance, to at all times use -Wrap for the Format-*
cmdlets, you might do that:
$PSDefaultParameterValues.Add('Format-*:Wrap', $True)
Persist the change in your profile
Any change you make to the $PSDefaultParameterValues
variable is just relevant for the present session. And the variable is topic to regular scoping guidelines – so altering the worth in a script doesn’t have an effect on the session as an entire. That signifies that in order for you these adjustments to happen each time you begin a PowerShell console, then you definitely add the suitable statements in your profile.
On my growth field, I exploit the next snippet inside my $PROFILE
script:
$PSDefaultParameterValues.Add('Format-*:AutoSize', $true)
$PSDefaultParameterValues.Add('Format-*:Wrap', $true)
$PSDefaultParameterValues.Add('Obtain-Job:Maintain', $true)
Abstract
The $PSDefaultParameterValues
automated variable is a superb software that will help you specify particular values for cmdlet parameters. You may specify a number of cmdlets through the use of wild playing cards within the hash desk’s key. Keep in mind that the hash desk secret’s the title of the cmdlet(s), a colon, after which the parameter’s title. Additionally, the hash desk worth is the brand new “default” worth for that parameter (and for the required cmdlet(s)).
You may learn extra about $PSDefaultParameterValues
, and different desire variables in about_Preference_Variables. And for extra particulars of parameter default values, see the about_Parameters_Default_Values assist file.