When we think of variables in Windows PowerShell, we often only consider two parts: the name of the variable, and the value of the variable. Well, it turns out that those aren’t the only properties; let’s discuss the description property.
I can’t say I’ve ever added a description to a variable until now, but I can think of times, when looking at someone’s code, where I wish I knew the reason why a variable existed. Best practice would indicate we use meaningful names for our variables, so it’s probably safe to assume that the same people that might use a poorly-named variable, probably don’t know or care that variables can have descriptions… but, I digress.
In this first example, we’ll create a new variable using what I’d call the standard method — the equal sign assignment operator.
PS C:\> $a = 12345 PS C:\> $a 12345 PS C:\> Get-Variable a | Select-Object * Name : a Description : Value : 12345 Visibility : Public Module : ModuleName : Options : None Attributes : {}
In line 1, we created a new variable, $a, and set its value to the numeric 12345. In the next line, we simply echoed the variable’s value. In line 4, we used the Get-Variable cmdlet and piped it to the Select-Object cmdlet and * so we were able to view all of its properties. If you take a look at the results, you’ll see the description property, and notice that it’s currently blank.
In the next example, we’ll use the Set-Variable cmdlet to modify the variable’s description.
PS C:\> Set-Variable a -Description 'This variable contains a 5-digit number.' PS C:\> Get-Variable a | Select-Object * Name : a Description : This variable contains a 5-digit number. Value : 12345 Visibility : Public Module : ModuleName : Options : None Attributes : {} PS C:\>
Once we use the Get-Variable cmdlet, and return all the properties again, we can see that our variable now contains a description value. Now, while many user-defined variables, such as we created here, don’t often contain descriptions, many of the automatic and preference variables do — take a look at a segment of the results returned by the next command.
PS C:\> Get-ChildItem variable: | Select-Object Name,Description | Format-Table -AutoSize Name Description ---- ----------- ... MaximumAliasCount Maximum number of aliases allowed in a session MaximumDriveCount Maximum number of drives allowed in a session MaximumErrorCount Maximum number of errors to retain in a session MaximumFunctionCount Maximum number of functions allowed in a session MaximumHistoryCount Maximum number of history objects to retain in a session MaximumVariableCount Maximum number of variables allowed in a session MyInvocation NestedPromptLevel Dictates what type of prompt should be displayed for the current nesting level ...
Well, there you go: something you might not have known about, and something you may never use.