#  trivial sample:
#  for every site I can find, try to load  it.
#  this reloads caches and loads any DLL's etc.
#  so that everything is ready for the first user
#
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")

function warmup-farm {
 $SPfarm = [Microsoft.SharePoint.Administration.SPFarm]::get_Local()
 $SPWebServices = new-object Microsoft.Sharepoint.Administration.SPWebServiceCollection($SPFarm)
 foreach ($SPWebService in $SPWebServices) {
   foreach ($SPWebApplication in $SPWebService.WebApplications) {
     foreach ($SPSite in $SPWebApplication.Sites) {
       foreach ($SPweb in $SPSite.AllWebs) {
         if ($SPweb.IsRootWeb) {
           $pageHtml = Warmup-SPsite($SPWeb.Url)
         }
       }
     }
   }
 }
}
function Warmup-SPSite($url) { 
  $wc = new-object Net.WebClient
  $wc.UseDefaultCredentials=$TRUE
  return $wc.DownLoadString($url)
}
warmup-farm