SWbemLocator 개체

SWbemLocator 개체의 메서드를 사용하여 로컬 컴퓨터 또는 원격 호스트 컴퓨터의 네임스페이스에 대한 연결을 나타내는 SWbemServices 개체를 가져올 수 있습니다. 그런 다음 SWbemServices 개체의 메서드를 사용하여 WMI에 액세스할 수 있습니다. 이 개체는 VBScript CreateObject 호출로 만들 수 있습니다.

멤버

SWbemLocator 개체에는 다음과 같은 형식의 멤버가 있습니다.

메서드

SWbemLocator 개체에는 다음과 같은 메서드가 있습니다.

메서드 설명
ConnectServer 지정된 컴퓨터에서 WMI에 연결합니다.

속성

SWbemLocator 개체에는 다음과 같은 속성이 있습니다.

속성 액세스 유형 설명
Security_
읽기 전용
보안 설정을 읽거나 변경하는 데 사용됩니다.

설명

WMI 스크립팅 라이브러리 개체 모델의 맨 위에는 SWbemLocator 개체가 있습니다. SWbemLocator는 VBScript GetObject 함수와 WMI 모니커 "winmgmts:"가 WMI에 대한 인증된 연결을 설정하는 데 사용되는 것과 마찬가지로 WMI 네임스페이스에 대한 인증된 연결을 설정하는 데 사용됩니다. 그러나 SWbemLocator는 GetObject 및 WMI 모니커를 사용하여 수행할 수 없는 두 가지 특정 스크립팅 시나리오를 해결하도록 설계되었습니다. 다음을 수행해야 하는 경우 SWbemLocator를 사용해야 합니다.

  • 원격 컴퓨터에서 WMI에 연결할 사용자 및 암호 자격 증명을 제공합니다. GetObject 함수와 함께 사용되는 WMI 모니커는 자격 증명을 지정하는 메커니즘을 포함하지 않습니다. 대부분의 WMI 활동(원격 컴퓨터에서 수행된 모든 활동 포함)에는 관리자 권한이 필요합니다. 일반적으로 관리자 계정 대신 일반 사용자 계정을 사용하여 로그온하는 경우 대체 자격 증명으로 스크립트를 실행하지 않는 한 대부분의 WMI 작업을 수행할 수 없습니다.
  • 웹 페이지 내에서 WMI 스크립트를 실행하는 경우 WMI에 연결합니다. Internet Explorer는 보안상의 이유로 GetObject 사용을 허용하지 않으므로 HTML 페이지에 포함된 스크립트를 실행할 때 GetObject 함수를 사용할 수 없습니다.

또한 GetObject와 함께 사용되는 WMI 연결 문자열이 혼동되거나 어려운 경우 SWbemLocator를 사용하여 WMI에 연결할 수 있습니다.

GetObject 대신 CreateObject를 사용하여 SWbemLocator에 대한 참조를 만듭니다. 참조를 만들려면 다음 스크립트 샘플의 줄 2에 표시된 것처럼 CreateObject 함수에 SWbemLocator 프로그래밍 식별자(ProgID) "WbemScripting.SWbemLocator"를 전달해야 합니다. SWbemLocator 개체에 대한 참조를 가져온 후 ConnectServer 메서드를 호출하여 WMI에 연결하고 SWbemServices 개체에 대한 참조를 가져옵니다. 이는 다음 스크립트의 줄 3에 설명되어 있습니다.

strComputer = "."
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServices = objSWbemLocator.ConnectServer(strComputer, "root\cimv2")
Set colSWbemObjectSet = objSWbemServices.InstancesOf("Win32_Service")
For Each objSWbemObject In colSWbemObjectSet
    Wscript.Echo "Name: " & objSWbemObject.Name
Next

대체 자격 증명으로 스크립트를 실행하려면 ConnectServer에 전달된 추가 매개 변수로 사용자 이름 및 암호를 포함합니다. 예를 들어 이 스크립트는 kenmyer라는 사용자의 자격 증명과 암호 homerj로 실행됩니다.

strComputer = "atl-dc-01"
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServices = objSWbemLocator.ConnectServer _
    (strComputer, "root\cimv2", "kenmyer", "homerj")
Set colSWbemObjectSet = objSWbemServices.InstancesOf("Win32_Service")
For Each objSWbemObject In colSWbemObjectSet
    Wscript.Echo "Name: " & objSWbemObject.Name
Next

Domain\User Name 형식을 사용하여 사용자 이름을 지정할 수도 있습니다. 다음은 그 예입니다.

" fabrikam\kenmyer"

다음 PowerShell 예제에서는 SWbemLocator를 사용하여 서버에 연결합니다.

$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

추가 정보

스크립팅 API 개체