Posted On June 15, 2020

Loading the SQL Server Management Objects (SMO)

kimconnect 0 comments
blog.KimConnect.com >> Codes , Database >> Loading the SQL Server Management Objects (SMO)
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
        } 
}

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Post

PowerShell: Microsoft Dynamics Update All Organizations

# updateCrmOrgs.ps1 function updateCrmOrgs{ try{ Add-PSSnapin Microsoft.Crm.Powershell $servers=Get-CrmServer $highestVersion=($servers.Version|measure-object -Maximum).Maximum $lowVersionServers=$servers|?{[version]$_.Version -lt [version]$highestVersion} if($lowVersionServers){ write-warning…

PowerShell: How To Bypass Double Hop Problems

# This is a working example of hoping without delegation. Fresh creds can be passed…

Recommended Skill Set of a Programmer

It's a given that a coder needs to learn how to code... like really well.…
Other project: DragonCoin.com