There are multiple ways to get this done. Starting from SQL Server 2005, you can get this information using the system logs to get the similar kind of information using system catalogs.
This can be achieved using sys.master_files and FileProperty function. The query below will give you the same information as you see in the Object Explorer window when you do the following: Right Click database name –> Tasks –> Shrink –> Files.
EXEC sp_MSforeachdb 'SELECT DB_NAME() as database_name, name as [File Name], physical_name as [Physical Name], size/128.0 as [Total Size in MB], size/128.0 - CAST (FILEPROPERTY(name,''SpaceUsed'') as int)/128.0 AS [Available Space in MB]. [file_id] FROM sys.database_files;'