Actually, this makes perfect sense to me. The CreationTime is a property of the $directory object. In the quoted string, $directory.CreationTime cannot be determined because the parser doesn't recognize it as a simple data value. To get what you want you should do something like this:
$directory = Get-Item 'C:\Program Files\Microsoft SQL Server'
$dTime = $directory.CreationTime
$message = "SQLDirectory Creation: $dTime"
This works because $dTime is a simple data value.