The Server object has the Edition property that you can use to retrieve the Edition. You can also use the Version, VersionMajor, VersionMinor and VersionString properties for the version
[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO') | out-null
$s = New-Object ('Microsoft.SqlServer.Management.Smo.Server') "LOCALHOST\SQL2000"
Write-Host "Edition" $s.Edition
Write-Host "Version" $s.Version
Write-Host "VersionMajor" $s.VersionMajor
Write-Host "VersionMinor" $s.VersionMinor
Write-Host "VersionString" $s.VersionString
For the disk space, it's a simple call to the Win32_WmiObject.The script below can be written in a single line. If you want to read thru a list of computers and list all the logical drives, you can use the -computer parameter in the Get-WmiObject and read thru a text file or something
Get-WmiObject Win32_LogicalDisk -filter "DriveType=3" | Select DeviceID, @{Name=”Size(GB)”;Expression={”{0:N1}” -f($_.size/1GB)}},@{Name=”Free Space(GB)”;Expression={”{0:N1}” -f($_.freespace/1GB)}}