function loadSMO{

    $ErrorActionPreference = "Stop"     
    $sqlpsRegistry="HKLM:\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.SqlServer.Management.PowerShell.sqlps"  
    try{
        if (Get-ChildItem $sqlpsRegistry -ErrorAction "SilentlyContinue")  {  
            throw "SQL Server Provider for Windows PowerShell is not installed."  
            } 
        else{  
            $registryItem = Get-ItemProperty $sqlpsRegistry  
            $sqlpsPath = [System.IO.Path]::GetDirectoryName($registryItem.Path)  
            }  
  
        $assemblylist =  
            "Microsoft.SqlServer.Management.Common",  
            "Microsoft.SqlServer.Smo", 
            "Microsoft.SqlServer.Dmf", 
            "Microsoft.SqlServer.Instapi", 
            "Microsoft.SqlServer.SqlWmiManagement",  
            "Microsoft.SqlServer.ConnectionInfo",  
            "Microsoft.SqlServer.SmoExtended",  
            "Microsoft.SqlServer.SqlTDiagM",  
            "Microsoft.SqlServer.SString",  
            "Microsoft.SqlServer.Management.RegisteredServers",  
            "Microsoft.SqlServer.Management.Sdk.Sfc",  
            "Microsoft.SqlServer.SqlEnum",  
            "Microsoft.SqlServer.RegSvrEnum",  
            "Microsoft.SqlServer.WmiEnum",  
            "Microsoft.SqlServer.ServiceBrokerEnum",  
            "Microsoft.SqlServer.ConnectionInfoExtended",  
            "Microsoft.SqlServer.Management.Collector",  
            "Microsoft.SqlServer.Management.CollectorEnum",  
            "Microsoft.SqlServer.Management.Dac",  
            "Microsoft.SqlServer.Management.DacEnum",  
            "Microsoft.SqlServer.Management.Utility"  
  
        foreach ($assembly in $assemblylist)  {  
            $assembly = [Reflection.Assembly]::LoadWithPartialName($assembly)  
            }  
  
        Push-Location  
        cd $sqlpsPath  
        update-FormatData -prependpath SQLProvider.Format.ps1xml   
        Pop-Location
        write-host "SMO successfully loaded."
        return $true
    }
    catch{
        write-warning "$error"
        return $false
        } 
}