This is a duplicate of https://serverfault.com/questions/102098/powershell-script-showing-commands-run. I thought it would be more appropriate to ask this question here.
Start-Transcript doesn't catch any exe output. That's a show stopper for me. I hate to say it but the best way I've found to do this is:
cmd /c powershell.exe -file c:\users\hillr\foo.ps1 > foo.log
This captures everything AFAICT.