SWbemServices 개체

SWbemServices 개체의 메서드를 사용하여 로컬 호스트 또는 원격 호스트의 네임스페이스에 대한 작업을 수행할 수 있습니다. 이 개체는 VBScript CreateObject 호출로 만들 수 없습니다.

멤버

SWbemServices 개체에는 다음 형식의 멤버가 있습니다.

메서드

SWbemServices 개체에는 다음 메서드가 있습니다.

메서드 설명
AssociatorsOf 하나 이상의 연결 클래스를 통해 지정된 리소스와 연결된 관리 리소스의 인스턴스를 검색합니다. 원래 엔드포인트에 대한 개체 경로를 제공하면 AssociatorsOf는 반대 엔드포인트의 관리 리소스를 반환합니다. AssociatorsOf 메서드는 ASSOCIATORS OF WQL 쿼리가 수행하는 것과 동일한 함수를 수행합니다.
AssociatorsOfAsync 지정된 개체와 연결된 개체(클래스 또는 인스턴스)의 컬렉션을 비동기식으로 반환합니다.
삭제 관리 리소스의 인스턴스(또는 CIM 리포지토리의 클래스 정의)를 삭제합니다.
DeleteAsync 개체 경로에 지정된 클래스 또는 인스턴스를 비동기식으로 삭제합니다.
ExecMethod 관리 리소스 클래스 정의에 따라 정의된 메서드를 실행하는 다른 방법을 제공합니다. 주로 스크립팅 언어가 매개 변수를 지원하지 않는 경우에 사용됩니다. 예를 들어 JScript는 매개 변수를 지원하지 않습니다.
ExecMethodAsync 메서드 공급자가 내보낸 메서드를 비동기식으로 실행합니다.
ExecNotificationQuery 이벤트를 수신하기 위해 이벤트 구독 쿼리를 실행합니다. 이벤트 구독 쿼리는 모니터링하려는 관리 환경에 대한 변경 사항을 정의하는 쿼리입니다. 변경이 발생하면 WMI 인프라는 호출 스크립트에 대한 변경 사항을 설명하는 이벤트를 제공합니다.
ExecNotificationQueryAsync 쿼리를 비동기식으로 실행하여 이벤트를 수신합니다.
ExecQuery 쿼리를 실행하여 WMI 관리 리소스(또는 클래스 정의)의 인스턴스 컬렉션을 검색합니다. ExecQueryExecQuery에 전달된 쿼리에서 정의한 기준에 따라 필터링된 인스턴스 컬렉션을 가져오는 데 사용할 수 있습니다.
ExecQueryAsync 쿼리를 비동기식으로 실행하여 개체를 검색합니다.
가져오기 개체 경로를 기반으로 관리 리소스(또는 클래스 정의)의 단일 인스턴스를 검색합니다.
GetAsync 개체 경로에 따라 클래스 정의 또는 인스턴스인 개체를 비동기식으로 검색합니다.
InstancesOf 클래스 이름을 기반으로 관리 리소스의 모든 인스턴스를 검색합니다. 기본적으로 InstancesOf는 심층 검색을 수행합니다. 즉, InstancesOf는 메서드에 전달된 클래스 이름으로 식별된 리소스의 인스턴스를 검색하고 대상 클래스의 하위 클래스(아래에 정의됨)인 모든 리소스의 모든 인스턴스를 검색합니다.
InstancesOfAsync 사용자 지정 선택 조건에 따라 지정된 클래스의 인스턴스를 비동기식으로 반환합니다.
ReferencesTo 지정된 리소스를 참조하는 모든 연결을 반환합니다. ReferencesTo를 가장 잘 이해하는 방법은 AssociatorsOf 메서드와 비교하는 것입니다. AssociatorsOf는 연결의 반대쪽 끝에 있는 동적 리소스를 반환합니다. ReferencesTo는 연결 자체를 반환합니다. ReferencesTo 메서드는 "REFERENCES OF" WQL 쿼리가 수행하는 것과 동일한 함수를 수행합니다.
ReferencesToAsync 특정 클래스 또는 인스턴스를 참조하는 모든 연결 클래스 또는 인스턴스의 컬렉션을 비동기식으로 반환합니다.
SubclassesOf CIM 리포지토리에서 지정된 클래스의 모든 하위 클래스를 검색합니다.
SubclassesOfAsync 지정된 클래스에 대한 하위 클래스의 컬렉션을 비동기식으로 반환합니다.

속성

SWbemServices 개체에는 다음 속성이 있습니다.

속성 액세스 유형 설명
Security_
읽기 전용
SWbemServices 개체에 대한 보안 설정을 가져오거나 설정하는 데 사용됩니다.

설명

메서드는 동기 모드, 비동기 모드 또는 반동기 모드에서 호출할 수 있습니다. 자세한 내용은 메서드 호출을 참조하세요.

개요

SWbemServices는 두 가지 기본 역할을 제공합니다. 먼저 SWbemServices 개체는 대상 컴퓨터의 WMI 네임스페이스에 대한 인증된 연결을 나타냅니다. 둘째, SWbemServices는 WMI 관리 리소스를 검색하는 데 사용하는 Automation 개체입니다. 다음 두 가지 방법 중 하나로 SWbemServices 개체에 대한 참조를 가져올 수 있습니다.

  • 지금까지 제시된 대부분의 WMI 스크립트에서 시연한 대로 WMI 모니커 "winmgmts:"와 함께 VBScript GetObject 함수를 사용할 수 있습니다. 다음 예제는 WMI 연결의 가장 간단한 형태입니다. 이 예제에서는 로컬 컴퓨터의 기본 네임스페이스(일반적으로 "Root\CIMv2")에 연결합니다.

    Set objSWbemServices = GetObject("winmgmts:")

  • SWbemLocator 개체 ConnectServer 메서드를 사용하여 SWbemServices 개체에 대한 참조를 가져올 수도 있습니다.

SWbemServices 개체에 대한 참조를 가져온 후 개체 참조를 사용하여 SWbemServices로 사용할 수 있는 18개 메서드 중 1개를 호출합니다. SWbemServices는 호출하는 메서드에 따라 세 가지 WMI 스크립팅 라이브러리 개체(SWbemObjectSet, SWbemObject 또는 SWbemEventSource) 중 하나를 반환할 수 있습니다. 각 메서드가 반환하는 개체의 형식을 알면 스크립트가 수행해야 하는 다음 단계를 결정하는 데 도움이 됩니다. 예를 들어 SWbemObjectSet을 다시 가져오는 경우 컬렉션의 각 SWbemObject에 액세스하려면 컬렉션을 열거해야 합니다. SWbemObject를 다시 가져오는 경우 컬렉션을 먼저 열거하지 않고 개체 메서드 및 속성에 즉시 액세스할 수 있습니다.

작업 모드

SWbemServices는 동기, 비동기 및 반동기의 세 가지 작업 모드를 지원합니다.

  • Synchronous: 동기 모드에서는 SWbemServices 메서드가 완료될 때까지 스크립트가 차단(일시 중지)됩니다. 스크립트가 대기할 뿐만 아니라 WMI가 관리되는 리소스의 인스턴스를 검색하는 경우 WMI는 데이터의 첫 번째 바이트가 호출 스크립트로 반환되기 전에 전체 SWbemObjectSet을 메모리에 빌드합니다. 이는 스크립트 성능 및 스크립트를 실행하는 컴퓨터에 부정적인 영향을 미칠 수 있습니다. 예를 들어 Windows 이벤트 로그에서 수천 개의 이벤트를 동기식으로 검색하는 데 시간이 오래 걸리고 많은 메모리를 사용할 수 있습니다. 이러한 이유로 동기 작업은 기본적으로 동기식인 세 가지 메서드(Delete, ExecMethodGet)를 제외하고는 권장되지 않습니다. 이러한 메서드는 대규모 데이터 집합을 반환하지 않으므로 반동기 작업이 필요하지 않습니다.

  • 비동기. 비동기 모드에서 스크립트는 9가지 비동기 메서드 중 하나를 호출하고 즉시 반환합니다. 즉, 비동기 메서드가 호출되는 즉시 스크립트가 다음 코드 줄 실행을 다시 시작합니다. 비동기 메서드를 사용하려면 스크립트에서 먼저 SWbemSink 개체와 이벤트 처리기라는 특수 서브루틴을 만들어야 합니다. WMI는 비동기 작업을 수행하고 작업이 완료되면 이벤트 처리기 서브루틴을 호출하여 스크립트에 알릴 수 있습니다.

  • 반동기. 반동기 모드는 동기 모드와 비동기 간의 손상입니다. 반동기 작업은 동기 작업보다 더 나은 성능을 제공하지만 비동기 작업을 처리하는 데 필요한 추가 지식 및 스크립팅 단계가 필요하지 않습니다. 대부분의 WMI 쿼리에 대한 기본 작업 유형입니다.

    반동기 모드에서 스크립트는 6개의 데이터 검색 메서드 중 하나를 호출하고 즉시 반환합니다. WMI는 스크립트가 계속 실행됨에 따라 백그라운드에서 관리 리소스를 검색합니다. 리소스가 검색되면 SWbemObjectSet을 통해 스크립트로 즉시 반환됩니다. 전체 컬렉션이 어셈블될 때까지 기다리지 않고 관리 리소스에 액세스하기 시작할 수 있습니다.

    CIM_DataFileWin32_NTLogEvent 같이 인스턴스가 많은(많다는 것은 1,000보다 크다는 의미임) 관리 리소스로 작업할 때는 반동기 작업에 주의 사항이 있습니다. WMI가 관리 리소스의 인스턴스를 처리하는 방식 때문입니다. 관리 리소스의 각 인스턴스에 대해 WMI는 SWbemObject 개체를 만들고 캐시합니다. 관리 리소스에 많은 수의 인스턴스가 있는 경우 인스턴스 검색은 사용 가능한 리소스를 독점하여 스크립트와 컴퓨터의 성능을 모두 줄일 수 있습니다.

    이 문제를 해결하려면 wbemFlagForwardOnly 플래그를 사용하여 반동기 메서드 호출을 최적화할 수 있습니다. wbemFlagForwardOnly 플래그는 wbemFlagReturnImmediately 플래그(기본 반동기 플래그)와 결합되어 WMI에 전달 전용 SWbemObjectSet를 반환하도록 지시하며, 그 결과 대규모 데이터 집합의 성능 문제가 제거됩니다. 그러나 wbemFlagForwardOnly 플래그를 사용하면 비용이 발생합니다. 전달 전용 SWbemObjectSet 은 한 번만 열거할 수 있습니다. 전달 전용 SWbemObjectSet의 각 SWbemObject에 액세스하고 나면 인스턴스에 할당된 메모리가 해제됩니다.

Delete, ExecMethod, Get 및 9가지 비동기 메서드를 제외하고는 반동기가 기본 및 권장 작업 모드입니다.

일반적으로 사용되는 메서드

시스템 관리 스크립트에서 가장 자주 사용되는 메서드는 InstancesOf, ExecQuery, GetExecNotificationQuery입니다. InstancesOf는 자주 사용되고 가장 쉬운 방법이지만 반드시 권장되는 정보 검색 방법은 아닙니다.

요구 사항

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

추가 정보

스크립팅 API 개체

메서드 호출