Here, the person is treating everything like it contains only one value. But $computername might contain multiple computer names (that's what [string] means), meaning $bios and $os will contain multiple items too. You'll often have to enumerate those to get this working right:
Folks will run into this even in simple situations. For example:
PowerShell v2 won't react so nicely; in v3, the variable inside double quotes is $procs, and since that variable contains multiple objects, PowerShell implicitly enumerates them and looks for a Name property. You'll notice ".name" from the original string appended to the end - PowerShell didn't do anything with that.