Single you are just returning a single value you could define a simple function for running SQL queries and insert the available space value into your table:
function Invoke-Sqlcmd2 {
param(
[string]$ServerInstance,
[string]$Database,
[string]$Query,
[Int32]$QueryTimeout=30
)
$conn=new-object System.Data.SqlClient.SQLConnection
$conn.ConnectionString="Server={0};Database={1};Integrated Security=True" -f $ServerInstance,$Database
$conn.Open()
$cmd=new-object system.Data.SqlClient.SqlCommand($Query,$conn)
$cmd.CommandTimeout=$QueryTimeout
$ds=New-Object system.Data.DataSet
$da=New-Object system.Data.SqlClient.SqlDataAdapter($cmd)
[void]$da.fill($ds)
$conn.Close()
$ds.Tables[0]
}
$space = (new-object -com scripting.filesystemobject).getdrive("\\127.0.0.1\C`$").availablespace
invoke-sqlcmd2 -ServerInstance Z002\SQL2K8 -Database spacedb -Query "INSERT driveSpace Values ('$space')"