$cars = \"bmw\",\"audi\",\"volvo\",\"vw\"
echo $cars.length
returns 4, but
$cars = \"bmw\"
returns 3 because it
declare you array as:
$car = array("bmw")
EDIT
now with powershell syntax:)
$car = [array]"bmw"
Instead of writing echo $cars.length
write echo @($cars).length
A couple other options:
Use the comma operator to create an array:
$cars = ,"bmw"
$cars.GetType().FullName
# Outputs: System.Object[]
Use array subexpression syntax:
$cars = @("bmw")
$cars.GetType().FullName
# Outputs: System.Object[]
If you don't want an object array you can downcast to the type you want e.g. a string array.
[string[]] $cars = ,"bmw"
[string[]] $cars = @("bmw")
Maybe I am missing something (lots of many-upvotes-members answers here that seem to be looking at this different to I, which would seem implausible that I am correct), but length is not the correct terminology for counting something. Length is usually used to obtain what you are getting, and not what you are wanting.
$cars.count
should give you what you seem to be looking for.