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: Audit Failed Logins of A User

$username='rambo' function auditLockouts($userName,$domainController,$refreshMinutes=1){ function getLockouts($domainControler){ # Requirement: # Domain Controllers Audit Group Policy has been…

Installing DotNet 3.5 on Windows with Restricted Internet Access

# Set Windows Source files # Assuming that a Windows ISO / DVD Rom have…

PowerShell: Detecting Windows Antivirus

One of the initial tasks of a Windows user is to determine whether a computer…