Creating custom types in PowerShell, revisited for v2
In June, I blogged on creating custom types within PowerShell. In PowerShell v2, released with Windows 7 and Windows Server 2008 R2, things are a bit easier.
Now, the syntax for adding properties is far nicer, as you can pass a hashtable of values to add-member. Namely, the previous example of enumerating the applications run at startup could be more cleanly written as:
$runkey = Get-Item 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Run' $values = Get-ItemProperty $runkey.PSPath foreach ($app in $runkey.Property) { $result = New-Object PSObject –prop @{ Application = $app; Path = $values.$app } Write-Output $result }
Compared to the syntax of using separate add-member calls or even using the select-object shortcut as described earlier, this is much cleaner. Of course, it can also be compressed on a single line if so desired.
January 20, 2010
· Jouni Heikniemi · 3 Comments
Tags: PowerShell · Posted in: .NET
3 Responses
Heikniemi Hardcoded » PowerShell: PSObject, custom types and the add-member cmdlet - January 20, 2010
[…] I’ll discuss some of the aspects involved in handling custom objects in PowerShell. Note: I have posted an update to this article regarding PowerShell v2, which cleans up the syntax described here. The theory […]
Aleksandar - February 5, 2010
# here is a slightly different way to create a hashtable with name/value pairs
$ht = @{}
$runkey = Get-Item 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Run'
$runkey.getvaluenames() | % {if ($_) {$ht.$_ = $runkey.getvalue($_)}}
new-object psobject -property $ht
Heikniemi Hardcoded » PowerShell Basics #4: Matching and capturing with regular expressions - February 13, 2010
[…] username and domain parts separately from the addresses. While you’re at it, you might as well construct some objects from the matches to get a cleaner view and help you manipulate the […]
Leave a Reply