I've just discovered "Set-StrictMode -Version Latest" in Powershell and am wondering how to handle this issue, or is it an issue at all?
$MainQuery= Invoke-Sqlcmd -Query $Query
If the SQL returns more than 1 record then $MainQuery.Count is valid, but if there is only 1 result returned the "Count" property is not valid.
I want to show the number of records:
$TotalRecords = $MainQuery.Count
*Also note, that in PS3 Microsoft changed something (forget what it is called) where 0 and 1 are different (no longer numbers unless specified with "@()" ) than numbers 2 and higher. As an example "@(1)" has to be used sometimes or it is seen as not a one, but an object or something. Thought I would mention this because it seems like it might be the same issue here?
Anyway, I guess $MainQuery might be called a dynamic object because the properties change? Hmmm, maybe it is just the change Microsoft made, but I would still like to know if the code is "OK" or if I should handle it differently?
Does PS 4 have a way to test if a property exist for an object and then if it does I could code it so that if .Count was not available then to set the $TotalRecords = 1 else $TotalRecords = $MainQuery.Count
What are your thoughts?
As footech elaborated, enclosing results in @(...) will make sure you can treat them as "array" all the time.