Powershell - The differences between .count and .length properties

To support me, you can subscribe to the channel, share and like the videos, disable your ad blocker or make a donation. Thank you!

Hello,

A question I get from time to time in training: What is the difference between .count and .length properties? Well, I admit having a lot to explain in a non-extendable time lapse often my answer is for lack of time : “They can give in some cases the same result but they are different”.

Here I take the time to elaborate a bit more!

# Let's take this two variables for the demonstration $Objects = Get-Service $Objects = Get-Item C:\WindowsUpdate.log $String = 'Titi # Let's display the result with the .Length and .Count properties for the 1st variable and the object type $Objects.Length # Result: 326 $Objects.count # Result: 326 $Objects.GetType() # Result: Object[]

The result is the same

# Let's display the result with the .Length and .Count properties for the 2nd variable and the object type
$Object.Length
# Result: 276
$Object.count
# Result: 1
$Object.GetType()
# Result: FileInfo
# Display the result with the .Length and .Count properties for the 3rd variable and the object type
$String.Length
# Result: 4
$String.count
# Result: 1
$String.GetType()
# Result: String

We can see that .count always displays the number of objects

For the .length property, the result depends on the type of the object:
- Number of characters for a String type object
- Number of objects for an array
- Size for an object of type ‘File’
- …

If you want length to also display the number of objects, make sure you return a collection

$Object.Length
# Result: 276
$Object.count
# Result: 1
$String.Length
# Result : 4
$String.count
# Result : 1
@($Object).Length
# Result: 1
@($Object).count
# Result: 1
@($String).Length
# Result : 1
@($String).count
# Result : 1

Related links