PowerShell Custom Objects
Combine Data with PSObject & PSCustomObject
PowerShell custom objects are a powerful feature that allow you to create objects with properties and methods tailored to your specific needs. These custom objects can be used to structure and manipulate data in a more intuitive and readable way compared to using raw data structures like arrays or hashtables. Here's a brief overview of PowerShell custom objects:
Advantages of Custom Objects
-
Clarity and Readability: Custom objects make your scripts more readable and maintainable by giving structure to your data.
-
Ease of Use: They integrate well with PowerShell cmdlets and pipeline operations.
-
Flexibility: You can dynamically add or remove properties and methods as needed.
​
Use Cases
-
Data Processing: Structuring and managing data from various sources (e.g., CSV files, APIs, databases).
-
Configuration Management: Representing configuration settings or state information in a clear and structured way.
-
Automation Scripts: Enhancing the functionality and clarity of automation scripts by encapsulating related data and methods.
​
Custom objects in PowerShell are an essential tool for scripting and automation, enabling the creation of complex, readable, and maintainable scripts.
Custom PowerShell Object: (Legacy)
​
$Obj=New-Object PSObject
$Obj |Add-Member NoteProperty MyName ("Scott Head")
$Obj |Add-Member NoteProperty MyHome ("Redondo")
$Obj |Add-Member NoteProperty MyCar ("Mustang")
$Obj |Add-Member NoteProperty MyJob ("Chevron Oil")
Return $Obj
New Custom PowerShell Object Format:
#Declare Array For Storing Multiple Object Data
$MyObjectArray=@()
#Create, Populate Object Data and Assign
$MyObjectVariable=[PSCustomObject]@{
FirstName = "SCOTT"
LastName = "HEAD"
Location="Redondo"
Job="Sr. Systems Admin"
SomeNUmber=455
}
Combine Data with New-Object PSObject PS Ver. 1
# Use WMI get IP on My Subnet
$IPAddress = Get-WmiObject Win32_NetworkAdapterConfiguration | Where{$_.IPAddress -Like "192.168.254*"} | Select -ExpandProperty IPAddress
# Use WMI get Operating System
$OS = (Get-WmiObject Win32_Operatingsystem ).Version
# Get-Host PowerShell Version
$PSVersion= (Get-Host | Select -ExpandProperty Version).major
#Build Object & Assign Values
$Obj=New-Object PSObject
$Obj |Add-Member NoteProperty 'Server Name' ($Env:Computername)
$Obj |Add-Member NoteProperty 'Operating System' ($OS)
$Obj |Add-Member NoteProperty 'PowerShell Version' ($PSVersion[0])
$Obj |Add-Member NoteProperty 'IPv4 Address' ($IPAddress)
cls
$Obj | Format-list
A way to combine data from data different sources into one Object that can also be added to an Array.
Combine Data with PSCustom Object PS Ver. 3
# Use WMI get IP on My Subnet
$IPAddress = Get-WmiObject Win32_NetworkAdapterConfiguration | Where{$_.IPAddress -Like "192.168.254*"} | Select -ExpandProperty IPAddress
# Use WMI get Operating System
$OS = (Get-WmiObject Win32_Operatingsystem ).Version
# Get-Host PowerShell Version
$PSVersion= (Get-Host | Select -ExpandProperty Version).major
#Build Object & Assign Values
$MyObject = [PSCustomObject]@{
'Server Name' = ($Env:Computername)
'Operating System' = ($OS)
'PowerShell Version'= ($PSVersion[0])
'IPv4 Address' = ($IPAddress)
}
$MyObject | Format-List