Windows PowerShell에서 SMO 어셈블리 로드Load the SMO Assemblies in Windows PowerShell

이 항목에서는 SQL Server PowerShell 공급자를 사용하지 않는 Windows PowerShell 스크립트에서 SMO(SQL Server Management Object) 어셈블리를 로드하는 방법을 설명합니다.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.

시작하기 전에Before You Begin

SMO 어셈블리를 로드하는 기본 메커니즘은 sqlps 모듈을 로드하는 것입니다.The preferred mechanism for loading the SMO assemblies is to load the sqlps module. 모듈에 포함된 SQL ServerSQL Server 공급자는 SMO 어셈블리를 자동으로 로드하며 PowerShell 스크립트에서 SMO 개체의 유용성을 확장하는 기능도 구현합니다.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. 자세한 내용은 SQLPS 모듈 가져오기를 참조하세요.For more information, see Import the SQLPS Module.

SMO 어셈블리를 직접 로드해야 할 수 있는 두 가지 경우가 있습니다.There are two cases where you may need to load the SMO assemblies directly:

  • 스크립트에서 SQL ServerSQL Server 스냅인의 cmdlet 또는 공급자를 참조하는 첫 번째 명령 전에 SMO 개체를 참조하는 경우If your script references a SMO object before the first command that references the provider or cmdlets from the SQL ServerSQL Server snap-ins.

  • 공급자 또는 cmdlet을 사용하지 않는 C# 또는 Visual Basic과 같은 다른 언어에서 SMO 코드를 이식하려는 경우You want to port SMO code from another language, such as C# or Visual Basic, which does not use the provider or cmdlets.

예제: SQL Server 관리 개체 로드Example: Loading the SQL Server Management Objects

다음 코드는 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  

참고 항목See Also

SQL Server PowerShellSQL Server PowerShell