다음을 통해 공유


SWbemLocator.ConnectServer 메서드

SWbemLocator 개체의 ConnectServer 메서드는 strServer 매개 변수에 지정된 컴퓨터의 네임스페이스에 연결합니다. 대상 컴퓨터는 로컬 또는 원격 컴퓨터일 수 있지만 WMI가 설치되어 있어야 합니다. 연결의 모니커 유형에 대한 예제 및 비교는 WMI 스크립트 만들기를 참조하세요.

Windows Vista부터 SWbemLocator.ConnectServerstrServer 매개 변수의 IPv6 주소를 사용하여 IPv6를 실행하는 컴퓨터와 연결할 수 있습니다. 자세한 내용은 WMI의 IPv6 및 IPv4 지원을 참조하세요.

이 구문에 대한 설명은 스크립팅 API의 문서 규칙을 참조하세요.

구문

objwbemServices = .ConnectServer( _
  [ ByVal strServer ], _
  [ ByVal strNamespace ], _
  [ ByVal strUser ], _
  [ ByVal strPassword ], _
  [ ByVal strLocale ], _
  [ ByVal strAuthority ], _
  [ ByVal iSecurityFlags ], _
  [ ByVal objwbemNamedValueSet ] _
)

매개 변수

strServer [in, optional]

연결할 컴퓨터 이름입니다. 원격 컴퓨터가 로그인하는 사용자 계정과 다른 도메인에 있는 경우 정규화된 컴퓨터 이름을 사용합니다. 이 매개 변수를 제공하지 않으면 호출이 로컬 컴퓨터로 기본 설정됩니다.

예: server1.network.fabrikam

이 매개 변수에서 IP 주소를 사용할 수도 있습니다. IP 주소가 IPv6 형식인 경우 대상 컴퓨터가 IPv6를 실행해야 합니다. IPv4의 주소는 123.123.123.123과 같습니다.

IPv6 형식의 IP 주소는 2010:836B:4179::836B:4179와 같습니다.

DNS 및 IPv4에 대한 자세한 내용은 설명 섹션을 참조하세요.

strNamespace [in, optional]

로그온하는 네임스페이스를 지정하는 문자열입니다. 예를 들어 root\default 네임스페이스에 로그온하려면 root\default를 사용합니다. 이 매개 변수를 지정하지 않으면 스크립팅을 위한 기본 네임스페이스로 구성된 네임스페이스가 기본값으로 설정됩니다. 자세한 내용은 WMI 애플리케이션 또는 스크립트 만들기를 참조하세요.

예: "root\CIMV2"

strUser [in, optional]

연결하는 데 사용할 사용자 이름입니다. 문자열은 사용자 이름 또는 Domain\Username 형식일 수 있습니다. 현재 보안 컨텍스트를 사용하려면 이 매개 변수를 비워 둡니다. strUser 매개 변수는 원격 WMI 서버에 대한 연결에만 사용해야 합니다. 로컬 WMI 연결에 strUser를 지정하려고 하면 연결 시도가 실패합니다. Kerberos 인증을 사용하는 경우 strUserstrPassword에 지정된 사용자 이름과 암호는 네트워크에서 가로챌 수 없습니다. UPN 형식을 사용하여 strUser를 지정할 수 있습니다.

예: "DomainName\UserName"

참고

도메인이 strAuthority에 지정된 경우 도메인을 여기에 지정해서는 안 됩니다. 두 매개 변수에 도메인을 지정하면 잘못된 매개 변수 오류가 발생합니다.

strPassword [in, optional]

연결을 시도할 때 사용할 암호를 지정하는 문자열입니다. 현재 보안 컨텍스트를 사용하려면 매개 변수를 비워 둡니다. strPassword 매개 변수는 원격 WMI 서버에 대한 연결에만 사용해야 합니다. 로컬 WMI 연결에 strPassword를 지정하려고 하면 연결 시도가 실패합니다. Kerberos 인증을 사용하는 경우 strUserstrPassword에 지정된 사용자 이름과 암호는 네트워크에서 가로챌 수 없습니다.

strLocale [in, optional]

지역화 코드를 지정하는 문자열입니다. 현재 로캘을 사용하려면 비워 둡니다. 비어 있지 않은 경우 이 매개 변수는 정보를 검색해야 하는 원하는 로캘을 나타내는 문자열이어야 합니다. Microsoft 로캘 식별자의 경우 문자열 형식은 "MS_xxxx"입니다. 여기서 xxxx는 LCID를 나타내는 16진수 형식의 문자열입니다. 예를 들어 미국 영어는 "MS_409"로 표시됩니다.

strAuthority [in, optional]

""

이 매개 변수는 선택 사항입니다. 그러나 지정된 경우 Kerberos 또는 NTLMDomain만 사용할 수 있습니다.

Kerberos:

strAuthority 매개 변수가 문자열 "Kerberos:"로 시작하는 경우 Kerberos 인증이 사용되며 이 매개 변수에는 Kerberos 보안 주체 이름이 포함되어야 합니다. Kerberos 보안 주체 이름은 Kerberos:domain(예: Kerberos:fabrikam, 여기서 fabrikam은 연결하려는 서버임)으로 지정됩니다.

예: "Kerberos:DOMAIN"

NTLMDomain:

NTLM(NT Lan Manager) 인증을 사용하려면 NTLMDomain:domain(예: NTLMDomain:fabrikam, 여기서 fabrikam은 도메인 이름임)으로 지정해야 합니다.

예: "NTLMDomain:DOMAIN"

이 매개 변수를 비워 두면 운영 체제가 COM과 협상하여 NTLM 또는 Kerberos 인증이 사용되는지 여부를 확인합니다. 이 매개 변수는 원격 WMI 서버에 대한 연결에만 사용해야 합니다. 로컬 WMI 연결에 대한 권한을 설정하려고 하면 연결 시도가 실패합니다.

참고

도메인이 기본 설정 위치인 strUser에 지정된 경우 여기에 지정해서는 안 됩니다. 두 매개 변수에 도메인을 지정하면 잘못된 매개 변수 오류가 발생합니다.

iSecurityFlags [in, optional]

ConnectServer에 플래그 값을 전달하는 데 사용됩니다.

0(0x0)

이 매개 변수의 값이 0이면 서버에 대한 연결이 설정된 후에만 ConnectServer 호출이 반환됩니다. 이로 인해 연결을 설정할 수 없는 경우 프로그램이 무기한으로 응답을 중지할 수 있습니다.

wbemConnectFlagUseMaxWait (128 (0x80))

ConnectServer 호출은 2분 이내에 반환됩니다. 연결을 설정할 수 없는 경우 프로그램이 무기한으로 응답을 중지하지 않도록 하려면 이 플래그를 사용합니다.

objwbemNamedValueSet [in, optional]

일반적으로 이는 정의되지 않습니다. 그렇지 않으면 요청을 서비스하는 공급자가 사용할 수 있는 컨텍스트 정보를 나타내는 요소가 있는 SWbemNamedValueSet 개체입니다. 그러한 정보를 지원하거나 요구하는 공급자는 인식된 값 이름, 값의 데이터 형식, 허용된 값 및 의미 체계를 문서화해야 합니다.

반환 값

성공하면 WMI는 strServer에 지정된 컴퓨터의 strNamespace에 지정된 네임스페이스에 바인딩된 SWbemServices 개체를 반환합니다.

오류 코드

ConnectServer 메서드가 완료되면 Err 개체에 다음 목록의 오류 코드 중 하나가 포함될 수 있습니다.

wbemErrAccessDenied - 2147749891(0x80041003)

현재 또는 지정된 사용자 이름 및 암호가 잘못되었거나 연결할 권한이 없습니다.

wbemErrFailed - 2147749889(0x80041001)

알 수 없는 오류입니다.

wbemErrInvalidNamespace - 2147749902(0x8004100E)

지정된 네임스페이스가 서버에 없습니다.

wbemErrInvalidParameter - 2147749896(0x80041008)

잘못된 매개 변수를 지정했거나 네임스페이스를 구문 분석할 수 없습니다.

wbemErrOutOfMemory - 2147749894(0x80041006)

메모리가 부족하여 작업을 완료할 수 없습니다.

wbemErrTransportFailure - 2147749909

네트워킹 오류가 발생하여 정상적으로 작동하지 않습니다.

설명

ConnectServer 메서드는 모니커 문자열에 다른 암호를 지정할 수 없으므로 원격 컴퓨터에서 다른 사용자 이름 및 암호 자격 증명을 사용하여 계정에 연결할 때 자주 사용됩니다. 자세한 내용은 원격 컴퓨터에서 WMI에 연결을 참조하세요.

IPv4 주소를 사용하여 원격 서버에 연결하면 예기치 않은 동작이 발생할 수 있습니다. 사용자 환경의 부실 DNS 항목이 원인일 수 있습니다. 이러한 경우에는 컴퓨터의 부실 PTR 항목이 사용되며 예기치 않은 결과가 발생합니다. ConnectServer를 호출하기 전에 IP 주소에 마침표(".")를 추가하면 이 동작을 방지할 수 있습니다. 이로 인해 역방향 DNS 조회에 실패하지만 올바른 컴퓨터에서 ConnectServer 호출이 성공할 수 있습니다.

예제

다음 VBScript 코드 예제에서는 원격 컴퓨터에 연결하여 Win32_IP4RouteTable 데이터를 가져오는 방법을 설명합니다. strDomain에 지정된 도메인 이름은 strAuthority에서 사용됩니다.

Const intMin = 3600
strComputer = "RemoteComputer" 
strDomain = "DomainName"  
Wscript.StdOut.Write "Please enter your user name:"
strUser = Wscript.StdIn.ReadLine 
Set objPassword = CreateObject("ScriptPW.Password")
Wscript.StdOut.Write "Please enter your password:"
strPassword = objPassword.GetPassword()
Wscript.Echo

Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator") 
Set objWMIService = objSWbemLocator.ConnectServer(strComputer, _ 
                                                  "root\CIMV2", _ 
                                                  strUser, _ 
                                                  strPassword, _ 
                                                  "MS_409", _ 
                                                  "NTLMDomain:" + strDomain) 
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_IP4RouteTable",,48) 
For Each objItem in colItems
    WScript.Echo "Age in Minutes: " & int(objItem.Age/intMin) & VBNewLine _
               & "Description:    " & objItem.Description & VBNewLine _
               & "Destination:    " & objItem.Destination & VBNewLine _
               & "InterfaceIndex: " & objItem.InterfaceIndex & VBNewLine _
               & "Mask:           " & objItem.Mask & VBNewLine _
               & "Metric1:        " & objItem.Metric1 & VBNewLine _
               & "Metric2:        " & objItem.Metric2 & VBNewLine _
               & "Metric3:        " & objItem.Metric3 & VBNewLine _
               & "Metric4:        " & objItem.Metric4 & VBNewLine _
               & "Metric5:        " & objItem.Metric5 & VBNewLine _
               & "Name:           " & objItem.Name & VBNewLine _
               & "NextHop:        " & objItem.NextHop & VBNewLine _
               & "Protocol:       " & objItem.Protocol & VBNewLine _
               & "Type: " & objItem.Type
    WScript.Echo
   </example>
Next

다음 PowerShell 코드 조각은 원격 서버에 액세스하고 사용 가능한 WMI 클래스를 나열합니다.

$NameSpace = 'root\ccm'
$ComputerName = 'sccm.company.com'
$WbemLocator = New-Object -ComObject "WbemScripting.SWbemLocator"
$WbemServices = $WbemLocator.ConnectServer($ComputerName, $Namespace)
$WbemClasses = $WbemServices.SubclassesOf()
$WbemClasses

요구 사항

요구 사항
지원되는 최소 클라이언트
Windows Vista
지원되는 최소 서버
Windows Server 2008
헤더
Wbemdisp.h
유형 라이브러리
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID_SWbemLocator
IID
IID_ISWbemLocator

추가 정보

SWbemLocator

SWbemServices

원격 컴퓨터에서 WMI에 연결

WMI 스크립트 만들기