The specification for CreateReport() provided by Microsoft is inaccurate, as far as I can tell. In c# it won’t matter, but it does in Powershell, due to the oddities in how Powershell handles empty arrays.
The specification says that CreateReport() will return an empty array if there are no errors or warnings. I believe that in SQL Server 2008 it actually returns a null. Maybe later I’ll find a flaw in my thinking…but maybe not!
Look at this code: