SQL script to count rows for all views in a database with SELECT-only access
A few improvements.


QUOTENAME() to thwart bad namers
add schema name, since schema is important
use sys.views instead of sys.objects (and remove type from output)
limit sys.partitions to index_id 0 or 1, to prevent double-counting in the case of an indexed view with additional non-clustered indexes (not sure what you think AVG will accomplish - what if there is an indexed view with a non-clustered filtered index?
use dynamic SQL to avoid manual copy/ manual paste/ manual massage/ manual run

DECLARE @sql nvarchar(max) = N'';

SELECT @sql += N'UNION ALL 
SELECT ' 
  + 'N''' + QUOTENAME(s.name) + N'.' + QUOTENAME(v.name) + N''',
  FromMetadata = N' + CONVERT(varchar(11),COALESCE(SUM(p.rows),0)) + N',
  TheHarderWay = COUNT(*) FROM ' + QUOTENAME(s.name) + N'.' + QUOTENAME(v.name) +N'
'
FROM sys.views AS v
INNER JOIN sys.schemas AS s
ON v.schema_id = s.schema_id
LEFT OUTER JOIN sys.partitions AS p
ON v.object_id = p.object_id
AND p.index_id IN (0,1)
GROUP BY s.name, v.name
ORDER BY s.name, v.name;

SET @sql = STUFF(@sql, 1, CHARINDEX(N'SELECT', @sql)-1, N'');

PRINT @sql;
--EXEC sys.sp_executesql @sql;



Note that FromMetadata will be 0 unless the view is indexed.