Caricare gli assembly SMO in Windows PowerShellLoad the SMO Assemblies in Windows PowerShell

In questo argomento viene descritta la modalità di caricamento assembly SMO (SQL Server Management Object, SMO) negli script di Windows PowerShell che non utilizzano il provider SQL Server PowerShell.This topic describes how to load the SQL Server Management Object (SMO) assemblies in Windows PowerShell scripts that do not use the SQL Server PowerShell provider.

Prima di iniziareBefore You Begin

Il meccanismo preferito per il caricamento degli assembly SMO consiste nel caricare il modulo sqlps .The preferred mechanism for loading the SMO assemblies is to load the sqlps module. Il provider SQL ServerSQL Server incluso nel modulo carica automaticamente gli assembly SMO e implementa anche le caratteristiche che estendono l'utilità degli oggetti SMO negli script di PowerShell.The SQL ServerSQL Server provider included in the module automatically loads the SMO assemblies, and also implements features that extend the usefulness of the SMO objects in PowerShell scripts. Per altre informazioni, vedere Importare il modulo SQLPS.For more information, see Import the SQLPS Module.

Nei due casi seguenti potrebbe essere necessario caricare direttamente gli assembly SMO:There are two cases where you may need to load the SMO assemblies directly:

  • Se lo script fa riferimento a un oggetto SMO prima del primo comando che fa riferimento al provider o ai cmdlet dagli snap-in di SQL ServerSQL Server .If your script references a SMO object before the first command that references the provider or cmdlets from the SQL ServerSQL Server snap-ins.

  • Se si desidera eseguire il porting del codice SMO da un altro linguaggio, ad esempio C# o Visual Basic, che non utilizza il provider o i cmdlet.You want to port SMO code from another language, such as C# or Visual Basic, which does not use the provider or cmdlets.

Esempio: caricamento di SQL Server Management ObjectsExample: Loading the SQL Server Management Objects

Il codice seguente consente di caricare gli assembly SMO.The following code loads the SMO assemblies:

#  
# Loads the SQL Server Management Objects (SMO)  
#  

$ErrorActionPreference = "Stop"  

$sqlpsreg="HKLM:\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.SqlServer.Management.PowerShell.sqlps"  

if (Get-ChildItem $sqlpsreg -ErrorAction "SilentlyContinue")  
{  
    throw "SQL Server Provider for Windows PowerShell is not installed."  
}  
else  
{  
    $item = Get-ItemProperty $sqlpsreg  
    $sqlpsPath = [System.IO.Path]::GetDirectoryName($item.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 ($asm in $assemblylist)  
{  
    $asm = [Reflection.Assembly]::LoadWithPartialName($asm)  
}  

Push-Location  
cd $sqlpsPath  
update-FormatData -prependpath SQLProvider.Format.ps1xml   
Pop-Location  

Vedere ancheSee Also

SQL Server PowerShellSQL Server PowerShell