Поделиться через


Подключение к поставщику SMS в Configuration Manager с помощью WMI

Перед подключением к поставщику SMS для локального или удаленного сервера сайта Configuration Manager сначала необходимо найти поставщик SMS для сервера сайта. Поставщик SMS может быть локальным или удаленным для используемого Configuration Manager сервера сайта. Класс SMS_ProviderLocation инструментария управления Windows (WMI) присутствует на всех серверах сайта Configuration Manager, и один экземпляр будет содержать расположение для используемого сервера сайта Configuration Manager.

Вы можете подключиться к поставщику SMS на сервере сайта Configuration Manager с помощью объекта WMI SWbemLocator или с помощью метода Windows Script HostGetObject. Оба подхода одинаково хорошо работают на локальных или удаленных подключениях со следующими ограничениями:

  • Если необходимо передать учетные данные пользователя на удаленный компьютер, необходимо использовать SWbemLocator .

  • Нельзя использовать SWbemLocator для явной передачи учетных данных пользователя на локальный компьютер.

    Существует несколько различных синтаксисов, которые можно использовать для подключения в зависимости от того, является ли подключение локальным или удаленным. После подключения к поставщику SMS у вас будет объект SWbemServices, который используется для доступа к Configuration Manager объектам.

Примечание.

Если необходимо добавить квалификаторы контекста для подключения, см. статью Добавление квалификатора контекста Configuration Manager с помощью WMI.

Подключение к поставщику SMS

  1. Получите объект WbemScripting.SWbemLocator .

  2. Задайте для уровня проверки подлинности конфиденциальность пакетов.

  3. Настройте подключение к поставщику SMS с помощью метода ConnectServer объекта SWbemLocator. Предоставьте учетные данные, только если это удаленный компьютер.

  4. Используя свойство объекта SMS_ProviderLocationProviderForLocalSite , подключитесь к поставщику SMS для локального компьютера и получите объект SWbemServices.

  5. Используйте объект SWbemServices для доступа к объектам поставщика. Дополнительные сведения см. в разделе Общие сведения об объектах.

Примеры

В следующем примере выполняется подключение к серверу. Затем он пытается подключиться к поставщику SMS для этого сервера. Обычно это тот же компьютер. Если это не так, SMS_ProviderLocation предоставляет правильное имя компьютера.

Сведения о вызове примера кода см. в разделе Вызов фрагментов кода Configuration Manager.

Function Connect(server, userName, userPassword)  

    On Error Resume Next  

    Dim net  
    Dim localConnection  
    Dim swbemLocator  
    Dim swbemServices  
    Dim providerLoc  
    Dim location  

    Set swbemLocator = CreateObject("WbemScripting.SWbemLocator")  

    swbemLocator.Security_.AuthenticationLevel = 6 'Packet Privacy.  

    ' If the server is local, do not supply credentials.  
    Set net = CreateObject("WScript.NetWork")   
    If UCase(net.ComputerName) = UCase(server) Then  
        localConnection = true  
        userName = ""  
        userPassword = ""  
        server = "."  
    End If  

    ' Connect to the server.  
    Set swbemServices= swbemLocator.ConnectServer _  
            (server, "root\sms",userName,userPassword)  
    If Err.Number<>0 Then  
        Wscript.Echo "Couldn't connect: " + Err.Description  
        Connect = null  
        Exit Function  
    End If  

    ' Determine where the provider is and connect.  
    Set providerLoc = swbemServices.InstancesOf("SMS_ProviderLocation")  

        For Each location In providerLoc  
            If location.ProviderForLocalSite = True Then  
                Set swbemServices = swbemLocator.ConnectServer _  
                 (location.Machine, "root\sms\site_" + _  
                    location.SiteCode,userName,userPassword)  
                If Err.Number<>0 Then  
                    Wscript.Echo "Couldn't connect:" + Err.Description  
                    Connect = Null  
                    Exit Function  
                End If  
                Set Connect = swbemServices  
                Exit Function  
            End If  
        Next  
    Set Connect = null ' Failed to connect.  
End Function  

В следующем примере выполняется подключение к удаленному серверу с помощью PowerShell и попытка подключения к SMS.

$siteCode = ''
$siteServer = 'server.domain'

$credentials = Get-Credential
$username = $credentials.UserName

# The connector does not understand a PSCredential. The following command will pull your PSCredential password into a string.
$password = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($credentials.Password))

$NameSpace = "root\sms\site_$siteCode"
$SWbemLocator = New-Object -ComObject "WbemScripting.SWbemLocator"
$SWbemLocator.Security_.AuthenticationLevel = 6
$connection = $SWbemLocator.ConnectServer($siteServer,$Namespace,$username,$password)

Компиляция программы

Для этого примера на C# требуется следующее:

Comments

Пример метода имеет следующие параметры:

Параметр Тип Описание
connection -Управляемых: WqlConnectionManager
— VBScript: SWbemServices
Допустимое подключение к поставщику SMS.
taskSequence -Управляемых: IResultObject
-Vbscript: SWbemObject
Допустимая последовательность задач (SMS_TaskSequence).
taskSequenceXML -Управляемых: String
-Vbscript: String
Допустимый XML-код последовательности задач.

Надежное программирование

Дополнительные сведения об обработке ошибок см. в разделе Сведения об ошибках Configuration Manager.

Безопасность .NET Framework

Использование скрипта для передачи имени пользователя и пароля представляет угрозу безопасности, и его следует избегать по возможности.

В предыдущем примере для проверки подлинности устанавливается конфиденциальность пакетов. Это тот же управляемый поставщик SMS.

Дополнительные сведения о защите приложений Configuration Manager см. в статье Configuration Manager администрирование на основе ролей.

См. также

Основы поставщика SMS
Добавление квалификатора контекста Configuration Manager с помощью WMI
Инструментарий управления Windows (WMI)