I use this script to retrieve database space information.
DECLARE @TempFiles TABLE (
[Name] [nvarchar](128) NULL,
[DatabaseID] [int] NULL,
[Type] [nvarchar](60) NULL,
[State] [nvarchar](60) NULL,
[SizeMB] [float] NULL,
[SizeUsedMB] [float] NULL,
[MaxSizeMB] [float] NULL,
[AutoGrowSize] [float] NULL,
[PercentGrowth] [bit] NULL,
[ReadOnly] [bit] NULL,
[FilesystemPath] [nvarchar](260) NULL)
INSERT INTO @TempFiles (
[Name],[DatabaseID],[Type],[State],[SizeMB],[SizeUsedMB]
,[MaxSizeMB],[AutoGrowSize],[PercentGrowth],[ReadOnly],[FilesystemPath])
EXEC sp_msforeachdb 'USE [?]; SELECT [name],
DB_ID() as [DatabaseID],
[type_desc] as [Type],
[state_desc] as [State],
/128.00 as [SizeMB],
fileproperty([name],''SpaceUsed'')/128.00 as [SizeUsedMB],
CASE WHEN [max_size] = -1 then [max_size] ELSE [max_size]/128.00 END as [MaxSizeMB],
CASE WHEN [is_percent_growth] = 1 THEN [growth] ELSE [growth]/128.00 END as [AutoGrowSize],
[is_percent_growth] as [PercentGrowth],
CASE WHEN [is_media_read_only] = 1 OR [is_read_only] = 1 THEN 1 ELSE 0 END as [ReadOnly],
[physical_name] as [FilesystemPath]
FROM sys.database_files'
SELECT * FROM @TempFiles