The Hard Way: $dbname="AdventureWorks" $Server="WIN7W510\R2" [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO") | out-null [System.reflection.assembly]::LoadWithPartialName('Microsoft.SqlServer.SMOExtended') | out-null $SMOserver = New-Object (’Microsoft.SqlServer.Management.Smo.Server’) -argumentlist $Server $db = $SMOserver.databases[$dbname] $cmdStatement=" $dbname" $cmdStatement+=foreach ($DFileGroups in $db.FileGroups) { foreach ($FGDFile in $DFileGroups.Files) {" ", $FGDFile.Name, $FGDFile.Size, $FGDFile.UsedSpace, $FGDFile.AvailableSpace, $FGDFile.FileName } } $cmdStatement+=" " $cmdStatement+=foreach ($logFile in $db.LogFiles) {$logFile.Name, $logFile.Size, $logFile.UsedSpace, $logFile.AvailableSpace, $logFile.FileName } $cmdStatement SQLPSX to the rescue! Get-SqlDatabase "WIN7W510\R2" "AdventureWorks" | Get-SqlDataFile | Format-Table dbname, FileGroup, FileName, Size, UsedSpace, FreeSpace; Get-SqlDatabase "WIN7W510\R2" "AdventureWorks" | Get-SqlLogFile | Format-Table dbname, FileGroup, FileName, Size, UsedSpace, FreeSpace; Fixing the Array-Based Results that you get in PowerShell $ArrayResults = Get-SqlDatabase "WIN7W510\R2" "AdventureWorks" | Get-SqlDataFile | Select dbname, FileGroup, FileName, Size, UsedSpace, FreeSpace; $ArrayResults.GetType() Without DataTable $DBinQuestion = Get-SqlDatabase "WIN7W510\R2" "AdventureWorks" $DBinQuestion | Get-SqlDataFile | Format-Table dbname, FileGroup, FileName, Size, UsedSpace, FreeSpace; $DBinQuestion | Get-SqlLogFile | Format-Table dbname, FileGroup, FileName, Size, UsedSpace, FreeSpace; With DataTable $DBinQuestion = Get-SqlDatabase "WIN7W510\R2" "AdventureWorks" $DBinQuestion | Get-SqlDataFile | Select dbname, FileGroup, FileName, Size, UsedSpace, FreeSpace | Out-DataTable $DBinQuestion | Get-SqlLogFile | Select dbname, FileGroup, FileName, Size, UsedSpace, FreeSpace | Out-DataTable Putting all of this in Motion $Instance = "WIN7W510\R2" foreach ($db in Get-SqlDatabase $Instance | Select Name) { $Results=Get-SqlDatabase $Instance $db.name | Get-SqlDataFile | Select Server, dbname, FileGroup, FileName, Size, UsedSpace, FreeSpace, timestamp | Out-DataTable; $Results+=Get-SqlDatabase $Instance $db.name | Get-SqlLogFile | Select Server, dbname, FileGroup, FileName, Size, UsedSpace, FreeSpace, timestamp | Out-DataTable; Write-DataTable -ServerInstance $Instance -Database CentralInfo -TableName DatabaseFileFreeSpace -Data $Results; }