WMI를 사용하여 Configuration Manager에서 SMS 공급자에 연결하는 방법How to Connect to an SMS Provider in Configuration Manager by Using WMI

로컬 또는 원격 Configuration Manager 사이트 서버에 대 한 SMS 공급자에 연결 하기 전에 먼저 사이트 서버용 SMS 공급자를 찾아야 합니다.Before connecting to the SMS Provider for a local or remote Configuration Manager site server, you first need to locate the SMS Provider for the site server. SMS 공급자는 사용 중인 Configuration Manager 사이트 서버에 대 한 로컬 또는 원격 일 수 있습니다.The SMS Provider can be either local or remote to the Configuration Manager site server you are using. WMI(Windows Management Instrumentation) (WMI) 클래스는 SMS_ProviderLocation 모든 Configuration Manager 사이트 서버에 있으며, 한 인스턴스는 사용 중인 Configuration Manager 사이트 서버에 대 한 위치를 포함 합니다.The Windows Management Instrumentation (WMI) class SMS_ProviderLocation is present on all Configuration Manager site servers, and one instance will contain the location for the Configuration Manager site server you are using.

WMI SWbemLocator 개체를 사용 하거나 Windows 스크립트 호스트 메서드를 사용 하 여 Configuration Manager 사이트 서버의 SMS 공급자에 연결할 수 있습니다 GetObject .You can connect to the SMS Provider on a Configuration Manager site server by using the WMI SWbemLocator object or by using the Windows Script Host GetObject method. 두 방법 모두 로컬 또는 원격 연결에서 동일 하 게 작동 하며 다음과 같은 제한 사항이 있습니다.Both approaches work equally well on local or remote connections, with the following limitations:

  • SWbemLocator원격 컴퓨터에 사용자 자격 증명을 전달 해야 하는 경우를 사용 해야 합니다.You must use SWbemLocator if you need to pass user credentials to a remote computer.

  • SWbemLocator를 사용 하 여 사용자 자격 증명을 로컬 컴퓨터에 명시적으로 전달할 수는 없습니다.You cannot use SWbemLocator to explicitly pass user credentials to a local computer.

    연결을 설정 하는 데 사용할 수 있는 여러 가지 구문이 있습니다. 연결이 로컬 인지 또는 원격 인지에 따라 달라 집니다.There are several different syntaxes that you can use to make the connection, depending on whether the connection is local or remote. SMS 공급자에 연결한 후 Configuration Manager 개체에 액세스 하는 데 사용 하는 SWbemServices 개체를 갖게 됩니다.After you are connected to the SMS Provider, you will have an SWbemServices object that you use to access Configuration Manager objects.


연결에 대 한 컨텍스트 한정자를 추가 해야 하는 경우 WMI를 사용 하 여 Configuration Manager 컨텍스트 한정자를 추가 하는 방법을 참조 하세요.If you need to add context qualifiers for the connection, see How to Add a Configuration Manager Context Qualifier by Using WMI.

SMS 공급자에 연결 하려면To connect to an SMS provider

  1. SWbemLocator 개체를 가져옵니다 WbemScripting .Get a WbemScripting.SWbemLocator object.

  2. 인증 수준을 패킷 개인 정보로 설정 합니다.Set the authentication level to packet privacy.

  3. SWbemLocator 개체 connectserver 메서드를 사용 하 여 SMS 공급자에 대 한 연결을 설정 합니다.Set up a connection to the SMS Provider by using the SWbemLocator object ConnectServer method. 원격 컴퓨터인 경우에만 자격 증명을 제공 합니다.Supply credentials only if it is a remote computer.

  4. SMS_ProviderLocation 개체 Providerforlocalsite 속성을 사용 하 여 로컬 컴퓨터의 SMS 공급자에 연결 하 고 SWbemServices 개체를 수신 합니다.Using the SMS_ProviderLocation object ProviderForLocalSite property, connect to the SMS Provider for the local computer and receive a SWbemServices object.

  5. SWbemServices 개체를 사용 하 여 공급자 개체에 액세스 합니다.Use the SWbemServices object to access provider objects. 자세한 내용은 개체 개요를 참조 하세요.For more information, see Objects overview.


다음 예에서는 서버에 연결 합니다.The following examples connects to the server. 그런 다음 해당 서버에 대 한 SMS 공급자에 연결을 시도 합니다.It then attempts to connect to the SMS Provider for that server. 일반적으로이 컴퓨터는 같은 컴퓨터입니다.Typically this will be the same computer. 그렇지 않으면 SMS_ProviderLocation 올바른 컴퓨터 이름을 제공 합니다.If it is not, SMS_ProviderLocation provides the correct computer name.

샘플 코드를 호출하는 방법에 대한 자세한 내용은 Configuration Manager 코드 조각 호출을 참조하세요.For information about calling the sample code, see Calling Configuration Manager Code Snippets.

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_" + _  
                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  
    Set Connect = null ' Failed to connect.  
End Function  

다음 샘플은 powerShell을 사용 하 여 원격 서버에 연결 하 고 SMS 연결을 시도 합니다.The following sample connects to the remote server using powerShell, and attempts a SMS connection.

$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)

코드 컴파일Compiling the Code

이 c # 예제에는 다음이 필요 합니다.This C# example requires:


샘플 메서드에는 다음과 같은 매개 변수가 있습니다.The sample method has the following parameters:

매개 변수Parameter TypeType DescriptionDescription
connection - 관리 코드: WqlConnectionManager- Managed: WqlConnectionManager
- VBScript: SWbemServices- VBScript: SWbemServices
SMS 공급자에 대한 유효한 연결입니다.A valid connection to the SMS Provider.
taskSequence - 관리 코드: IResultObject- Managed: IResultObject
Vba SWbemObject- VBScript: SWbemObject
유효한 작업 순서 (SMS_TaskSequence)입니다.A valid task sequence (SMS_TaskSequence).
taskSequenceXML - 관리 코드: String- Managed: String
- VBScript: String- VBScript: String
유효한 작업 순서 XML입니다.A valid task sequence XML.

강력한 프로그래밍Robust Programming

오류 처리에 대한 자세한 내용은 Configuration Manager 오류 정보를 참조하세요.For more information about error handling, see About Configuration Manager Errors.

.NET Framework 보안.NET Framework Security

스크립트를 사용 하 여 사용자 이름과 암호를 전달 하는 것은 보안상 위험 하므로 가능 하면 피해 야 합니다.Using script to pass the user name and password is a security risk and should be avoided where possible.

앞의 예제에서는 인증을 패킷 개인 정보로 설정 합니다.The preceding example sets the authentication to packet privacy. 이는 동일한 관리 되는 SMS 공급자입니다.This is the same managed SMS Provider.

Configuration Manager 응용 프로그램을 보호 하는 방법에 대 한 자세한 내용은 역할 기반 관리 Configuration Manager를 참조 하세요.For more information about securing Configuration Manager applications, see Configuration Manager role-based administration.

참고 항목See Also

SMS 공급자 기본 사항 SMS Provider fundamentals
WMI를 사용 하 여 Configuration Manager 컨텍스트 한정자를 추가 하는 방법 How to Add a Configuration Manager Context Qualifier by Using WMI
Windows Management InstrumentationWindows Management Instrumentation