How to Get All Properties of an Object in PowerShell

To get all properties of an object in PowerShell, pipe it to Format-List with an asterisk. You get every property name with its value:

Get-Service -Name Spooler | Format-List -Property *

To see just the names and types, use Get-Member -MemberType Property instead. Below I compare both, loop through properties in a script, find hidden members and dig into nested objects.

I used objects with fixed values, such as a date and a sample order, so the output is the same on any PC.

List property names with Get-Member

Get-Member shows the type and definition of every property. -MemberType Property hides the methods:

$date = Get-Date -Date '2026-10-04 09:30'
$date | Get-Member -MemberType Property | Select-Object -Property Name, Definition

Output:

Name        Definition
----        ----------
Date        datetime Date {get;}
Day         int Day {get;}
DayOfWeek   System.DayOfWeek DayOfWeek {get;}
DayOfYear   int DayOfYear {get;}
Hour        int Hour {get;}
Kind        System.DateTimeKind Kind {get;}
Microsecond int Microsecond {get;}
Millisecond int Millisecond {get;}
Minute      int Minute {get;}
Month       int Month {get;}
Nanosecond  int Nanosecond {get;}
Second      int Second {get;}
Ticks       long Ticks {get;}
TimeOfDay   timespan TimeOfDay {get;}
Year        int Year {get;}
PowerShell Get-Member -MemberType Property
Every property of a DateTime object (PowerShell 7)

Windows PowerShell 5.1 shows two fewer: Microsecond and Nanosecond were added in .NET 7, which PowerShell 7 runs on. Add -MemberType Method to see what an object can do.

See every property and value with Format-List *

Most commands only show a few columns by default. Format-List -Property * shows everything:

$date = Get-Date -Date '2026-10-04 09:30'
$date | Format-List -Property *

Output:

DisplayHint : DateTime
DateTime    : Sunday, October 4, 2026 9:30:00 AM
Date        : 10/4/2026 12:00:00 AM
Day         : 4
DayOfWeek   : Sunday
DayOfYear   : 277
Hour        : 9
Kind        : Unspecified
Millisecond : 0
Microsecond : 0
Nanosecond  : 0
Minute      : 30
Month       : 10
Second      : 0
Ticks       : 639267030000000000
TimeOfDay   : 09:30:00
Year        : 2026
PowerShell Format-List all properties
All properties and values of the same date (Windows PowerShell 5.1)

DisplayHint and DateTime come from PowerShell’s extended type system, so they appear even though DateTime itself doesn’t define them. Format-List is for reading only, so don’t pipe its output to other cmdlets.

Select-Object * for data you keep using

Select-Object -Property * also returns every property, but as an object you can sort, filter or export. Use it when the next step is Export-Csv rather than your eyes.

Loop through properties in a script

Every object has a hidden PSObject member. Its Properties collection gives you each name and value, in order:

$order = @'
Order,City,Items,Shipped
ORD-4001,Austin,3,2026-10-02
'@ | ConvertFrom-Csv

foreach ($property in $order.PSObject.Properties) {
    '{0,-8} = {1}' -f $property.Name, $property.Value
}

Output:

Order    = ORD-4001
City     = Austin
Items    = 3
Shipped  = 2026-10-02
PowerShell PSObject.Properties name and value
Looping through the columns of an imported CSV row (PowerShell 7)

This is handy for generic code, such as writing every column of a row to a log.

Show hidden members with -Force

Get-Member hides some built-in members unless you add -Force:

$order = [pscustomobject]@{ Order = 'ORD-4001'; City = 'Austin' }
"Visible members: $(@($order | Get-Member).Count)"
"With -Force:     $(@($order | Get-Member -Force).Count)"
($order | Get-Member -Force -Name ps* | Select-Object -ExpandProperty Name) -join ', '

Output:

Visible members: 6
With -Force:     11
pstypenames, psadapted, psbase, psextended, psobject

The extra ones, such as psobject and psbase, are the intrinsic members PowerShell adds to every object. You rarely need them, but they explain where PSObject came from.

Get properties of nested objects

When a property holds another object, the default view squeezes it into one line. Read the property directly to see its own properties:

$server = [pscustomobject]@{
    Name    = 'NYC-SQL-01'
    Owner   = [pscustomobject]@{ Team = 'Finance'; Email = 'finance@contoso.com' }
    Disks   = 'C:', 'D:'
}
$server
''
$server.Owner | Format-List -Property *
$server | Select-Object -ExpandProperty Disks

Output:

Name       Owner                                      Disks
----       -----                                      -----
NYC-SQL-01 @{Team=Finance; Email=finance@contoso.com} {C:, D:}



Team  : Finance
Email : finance@contoso.com

C:
D:

Select-Object -ExpandProperty unwraps an array property into separate values. To see the whole tree at once, try $server | ConvertTo-Json -Depth 3. For type details, see getting the type of an object.

Frequently Asked Questions

How do I see all properties of an object in PowerShell?

Pipe it to Format-List -Property * to see every property and its value.

How do I list only the property names?

Run $object | Get-Member -MemberType Property, or $object.PSObject.Properties.Name.

What is the difference between Format-List * and Select-Object *?

Format-List * is for display only. Select-Object * returns objects you can still sort, filter or export.

How do I loop through all properties of an object?

Use foreach ($p in $object.PSObject.Properties) { $p.Name; $p.Value }.