For those of you who have taken my PowerShell V2 class probably remember the step-by-step exercise that I took you through to help you build a custom object. In PowerShell V3, we can create a new NoteProperty with a smaller amount of code. Below is code that creates an object with a single note property.
Using the Add-Member cmdlet, we declare the member type that we are adding “NoteProperty”. Then we provide it with a name and a value. In PowerShell V3, two new parameters were added to the Add-Member cmdlet. They are –NotePropertyName and –NotePropertyValue. Below is the same object created with this new method.
You can see that the script successfully executes in PowerShell V3. When I switch the shell to the V2 engine and then executed the code, PowerShell V2 hit a run time error because its version of Add-Member does not have a parameter for ‘NotePropertyName’.
Just one of the little hidden tricks inside of PoSH V3. As always, code for the lowest level of PowerShell that your code will execute on.
$Obj = New-Object -TypeName PSObject
$Obj | Add-Member -MemberType NoteProperty -Name "Value1" -Value 10 Using the Add-Member cmdlet, we declare the member type that we are adding “NoteProperty”. Then we provide it with a name and a value. In PowerShell V3, two new parameters were added to the Add-Member cmdlet. They are –NotePropertyName and –NotePropertyValue. Below is the same object created with this new method.
$Obj = New-Object -TypeName PSObject
$Obj | Add-Member -NotePropertyName "Value1" -NotePropertyValue 10
If your code will be running on clients or servers using PowerShell V2, do not use this new method. Take a look at the screen shot below.You can see that the script successfully executes in PowerShell V3. When I switch the shell to the V2 engine and then executed the code, PowerShell V2 hit a run time error because its version of Add-Member does not have a parameter for ‘NotePropertyName’.
Just one of the little hidden tricks inside of PoSH V3. As always, code for the lowest level of PowerShell that your code will execute on.
Comments