I use/manage/access Active Directory, Exchange, Operations Manager, Office Communications Server, Configuration Manager(when they make me), VMware, etc. Lots of applications that are accessible via PowerShell. I have been using add-psssnapin or import-module to load what I needed on an individual basis and telling people to use that method. Not a happy answer when setting things up as you always find later you missed something.
When you are new to PowerShell there is mention and piecemeal examples of what should/might go into your PowerShell profile and what is just useful to have starting out. These are generally in articles and how to's and your $profile really is something that is and should be yours to configure and customize. Some of the more fun and interesting looking stuff is way beyond the realm of the beginners to understand so leads to frustration and many just want to know what 'should' be or is 'useful' to have in there.
We are deploying more servers and services that are accessible by PowerShell, in preparation for this I have been evangelizing PowerShell at work for a few years now and have been writing install and configure documents for my team. The question of what should be in my $profile has been coming up more often. Various searches came back with snippets, parts or developer profiles that aren't really all that useful to starting script writers.
Some of this is from those snippets and half remembered readings. It should get anyone started and some of it is written to show slight differences in how things can be done. Add-PSSnapin vs Add-Module for example.
This $Profile.CurrentUserAllHosts will load all registered snap ins and modules on your system. Comments welcome.