일부 WMI 메서드는 큰 컬렉션을 반환하여 스크립트의 응답을 중지할 수 있습니다. 스크립트에서 반동기 액세스는 기본값입니다. 및 WMI(Windows Management Instrumentation)는 다음 SWbemServices 메서드와 같은 큰 개체 컬렉션을 반환할 수 있는 호출에 대해 wbemFlagReturnImmediately 설정합니다. InstancesOf, SubclassesOf, ExecQuery, AssociatorsOf및 ReferencesTo.
반동기 액세스는 매개변수 IFlags에 설정된 wbemFlagReturnImmediately를 사용하는 것이며, 이는 다음 SWbemObject 메서드의 큰 객체 집합을 반환할 수 있는 호출의 기본값이기도 합니다: Instances_, Subclasses_, Associators_및 References_.
대량의 개체 컬렉션을 처리할 때 WMI 메모리 리소스 사용을 줄이려면 IFlags 매개 변수에 wbemFlagForwardOnly 값을 포함합니다. wbemFlagForwardOnly를 사용하면 WMI가 컬렉션을 되감거나 항목에 다시 액세스할 수 없는 정방향 전용 열거자를 만듭니다.
WMI는 For Each 문이 개체를 처리할 때 각 개체에 대한 메모리를 제거합니다. 컬렉션을 가져온 호출에서 wbemFlagForwardOnly 플래그가 설정된 경우 컬렉션에 대한 Count 메서드를 호출할 수 없습니다. IFlags 매개 변수에는 SWbemServices.ExecNotificationQuery 메서드에 대해 기본적으로 설정된 wbemFlagReturnImmediately 및 wbemFlagForwardOnly 있습니다.
다음 절차에서는 VBScript를 사용하여 반동기 호출을 만드는 방법을 설명합니다.
VBScript를 반동기적 호출을 하려면
- IFlags 매개 변수를 wbemFlagReturnImmediately값으로 설정합니다.
- iFlags 값을 사용하여 SWbemServices.ExecQuery 또는 SWbemServices.ExecNotificationQuery대한 일반 동기 호출을 수행합니다.
- 호출에서 반환된 개체를 컬렉션으로 처리하려면 VBScript For Each같은 열거형 구문을 사용합니다. 각 개체가 반환될 때 컬렉션의 다음 항목으로 처리됩니다.
- wbemFlagReturnImmediately 값과 wbemFlagForwardOnly값을 결합하여 정방향 전용 열거자를 만듭니다. 이 OR 작업의 10진수 값은 48입니다. 이러한 상수는 Visual Basic용 wbemdisp.tlb 형식 라이브러리에 정의됩니다. 대부분의 스크립팅 언어는 숫자 값을 사용하거나 상수 정의합니다. 자세한 내용은 WbemFlagEnum참조하세요.
다음 코드 예제에서는 반동기 메서드 호출을 만드는 방법을 보여 줍니다. 자세한 내용은 메서드호출을 참조하세요.
wbemFlagReturnImmediately = 16
wbemFlagForwardOnly = 32
IFlags = wbemFlagReturnImmediately + wbemFlagForwardOnly
WScript.Echo IFlags
Set objWMIService = GetObject("winmgmts:root\cimv2")
' Query for all the Win32_Process objects on the
' local computer and use forward-only enumerator
Set colProcesses = objWMIService.ExecQuery("SELECT Name FROM Win32_Process",,IFlags)
' Receive each object as it arrives
For Each objProcess in colProcesses
WScript.Echo objProcess.Name
Next
관련 항목
-
메서드 호출