Bagikan melalui


Memuat Rakitan SMO di Windows PowerShell

Topik ini menjelaskan cara memuat rakitan SQL Server Management Object (SMO) di skrip Windows PowerShell yang tidak menggunakan penyedia PowerShell SQL Server.

Sebelum Anda mulai

Mekanisme yang paling disukai untuk memuat rakitan SMO adalah dengan memuat modul sqlps. Penyedia SQL Server yang disertakan dalam modul secara otomatis memuat rakitan SMO, dan juga mengimplementasikan fitur yang memperluas kegunaan objek SMO dalam skrip PowerShell.

Ada dua kasus di mana Anda mungkin perlu memuat rakitan SMO secara langsung:

  • Jika skrip Anda mereferensikan objek SMO sebelum perintah pertama yang mereferensikan penyedia atau cmdlet dari snap-in SQL Server.

  • Anda ingin memindah kode SMO dari bahasa lain, seperti C# atau Visual Basic, yang tidak menggunakan penyedia atau cmdlet.

Contoh: Memuat Objek Manajemen SQL Server

Kode berikut memuat rakitan SMO:

# 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  

Lihat Juga

SQL Server PowerShell