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, purchase my 3D plans, or make a donation or subscribe on Ko-Fi. 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