Share via


Register-WmiEvent

WMI(Windows Management Instrumentation) 이벤트를 구독합니다.

Syntax

Register-WmiEvent
        [-Namespace <String>]
        [-Credential <PSCredential>]
        [-ComputerName <String>]
        [-Class] <String>
        [-Timeout <Int64>]
        [[-SourceIdentifier] <String>]
        [[-Action] <ScriptBlock>]
        [-MessageData <PSObject>]
        [-SupportEvent]
        [-Forward]
        [-MaxTriggerCount <Int32>]
        [<CommonParameters>]
Register-WmiEvent
        [-Namespace <String>]
        [-Credential <PSCredential>]
        [-ComputerName <String>]
        [-Query] <String>
        [-Timeout <Int64>]
        [[-SourceIdentifier] <String>]
        [[-Action] <ScriptBlock>]
        [-MessageData <PSObject>]
        [-SupportEvent]
        [-Forward]
        [-MaxTriggerCount <Int32>]
        [<CommonParameters>]

Description

cmdlet은 Register-WmiEvent 로컬 컴퓨터 또는 원격 컴퓨터에서 WMI(Windows Management Instrumentation) 이벤트를 구독합니다.

구독된 WMI 이벤트가 발생하면 원격 컴퓨터에서 이벤트가 발생하더라도 로컬 세션의 이벤트 큐에 추가됩니다. 이벤트 큐에서 이벤트를 얻으려면 cmdlet을 Get-Event 사용합니다.

원격 컴퓨터에서 Register-WmiEvent 이벤트를 구독하고 큐에서 이벤트를 식별하는 데 도움이 되는 이벤트의 속성 값을 지정하는 매개 변수를 사용할 수 있습니다. Action 매개 변수를 사용하여 구독 이벤트가 발생할 때 수행할 작업을 지정할 수도 있습니다.

이벤트를 구독하면 이벤트 구독자가 세션에 추가됩니다. 세션에서 이벤트 구독자를 얻으려면 cmdlet을 Get-EventSubscriber 사용합니다. 구독을 취소하려면 세션에서 이벤트 구독자를 삭제하는 cmdlet을 사용합니다 Unregister-Event .

Windows PowerShell 3.0에 도입된 새로운 CIM(일반 정보 모델) cmdlet은 WMI cmdlet과 동일한 작업을 수행합니다. CIM cmdlet은 WSMan(WS-Management) 표준 및 CIM 표준을 준수하므로 cmdlet은 동일한 기술을 사용하여 Windows 운영 체제를 실행하는 컴퓨터와 다른 운영 체제를 실행하는 컴퓨터를 관리할 수 있습니다. 사용하는 Register-WmiEvent대신 Register-CimIndicationEvent cmdlet을 사용하는 것이 좋습니다.

예제

예제 1: 클래스에서 생성된 이벤트 구독

이 명령은 Win32_ProcessStartTrace 클래스에서 생성된 이벤트를 구독합니다. 이 클래스는 프로세스가 시작될 때마다 이벤트를 발생합니다.

Register-WmiEvent -Class 'Win32_ProcessStartTrace' -SourceIdentifier "ProcessStarted"

예제 2: 프로세스에 대한 만들기 이벤트 구독

이 명령은 쿼리를 사용하여 Win32_process 인스턴스 만들기 이벤트를 구독합니다.

$wmiParameters = @{
  Query = "select * from __instancecreationevent within 5 where targetinstance isa 'win32_process'"
  SourceIdentifier = "WMIProcess"
  MessageData = "Test 01"
  TimeOut = 500
}
Register-WmiEvent @wmiParameters

예제 3: 동작을 사용하여 이벤트에 응답

이 예제에서는 동작을 사용하여 이벤트에 응답하는 방법을 보여 줍니다. 이 경우 프로세스가 시작되면 현재 세션의 모든 Start-Process 명령이 XML 파일에 기록됩니다.

$action = { Get-History | where { $_.commandline -like "*start-process*" } | export-cliXml "commandHistory.clixml" }
Register-WmiEvent -Class 'Win32_ProcessStartTrace' -SourceIdentifier "ProcessStarted" -Action $action

Id    Name            State      HasMoreData   Location  Command
--    ----            -----      -----------   --------  -------
1     ProcessStarted  NotStarted False                   get-history | where {...

Action 매개 변수 Register-WmiEvent사용하는 경우 이벤트 동작을 나타내는 백그라운드 작업을 반환합니다. 작업 cmdlet(예: Get-JobReceive-Job)을 사용하여 이벤트 작업을 관리할 수 있습니다.

자세한 내용은 about_Jobs 참조하세요.

예제 4: 원격 컴퓨터에서 이벤트 등록

이 예제에서는 Server01 원격 컴퓨터의 이벤트를 등록합니다.

Register-WmiEvent -Class 'Win32_ProcessStartTrace' -SourceIdentifier "Start" -Computername Server01
Get-Event -SourceIdentifier "Start"

WMI는 로컬 컴퓨터에 이벤트를 반환하고 현재 세션의 이벤트 큐에 저장합니다. 이벤트를 검색하려면 로컬 Get-Event 명령을 실행합니다.

매개 변수

-Action

이벤트를 처리하는 명령을 지정합니다. 이벤트 큐에 이벤트를 보내는 대신 이벤트가 발생할 때 Action 매개 변수의 명령이 실행됩니다. 명령을 중괄호({})로 묶어 스크립트 블록을 만듭니다.

동작 값에는 동작 스크립트 블록에 $Event이벤트에 대한 정보를 제공하는 , $Sender$EventSubscriber, $EventArgs$Args 자동 변수가 포함될 수 있습니다. 자세한 내용은 about_Automatic_Variables를 참조하세요.

작업을 지정하면 해당 동작 Register-WmiEvent 을 나타내는 이벤트 작업 개체를 반환합니다. 작업 명사(작업 cmdlet)가 포함된 cmdlet을 사용하여 이벤트 작업을 관리할 수 있습니다.

Type:ScriptBlock
Position:101
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Class

구독할 이벤트를 지정합니다. 이벤트를 생성하는 WMI 클래스를 입력합니다. 클래스 또는 쿼리 매개 변수는 모든 명령에 필요합니다.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-ComputerName

명령이 실행되는 컴퓨터의 이름을 지정합니다. 기본값은 로컬 컴퓨터입니다.

컴퓨터의 NetBIOS 이름, IP 주소 또는 정규화된 do기본 이름을 입력합니다. 로컬 컴퓨터를 지정하려면 컴퓨터 이름, 점(.) 또는 localhost를 입력합니다.

이 매개 변수는 Windows PowerShell 원격을 사용하지 않습니다. 컴퓨터가 원격 명령을 실행하도록 구성되지 않은 경우에도 ComputerName 매개 변수를 사용할 수 있습니다.

Type:String
Aliases:Cn
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Credential

이 작업을 수행할 권한이 있는 사용자 계정을 지정합니다. 기본값은 현재 사용자입니다.

User01 또는 Do기본01\User01과 같은 사용자 이름을 입력하거나 cmdlet에서 생성된 것과 같은 PSCredential 개체를 Get-Credential 입력합니다. 사용자 이름을 입력하는 경우 이 cmdlet은 암호를 묻는 메시지를 표시합니다.

Type:PSCredential
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Forward

이 cmdlet은 이 구독에 대한 이벤트를 로컬 컴퓨터의 세션으로 보냅니다. 원격 컴퓨터 또는 원격 세션에서 이벤트를 등록할 때 이 매개 변수를 사용합니다.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MaxTriggerCount

최대 트리거 수를 지정합니다.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MessageData

이 이벤트 구독에 연결할 추가 데이터를 지정합니다. 이 매개 변수의 값은 이 구독과 연결된 모든 이벤트의 MessageData 속성에 나타납니다.

Type:PSObject
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Namespace

WMI 클래스의 네임스페이스를 지정합니다.

Type:String
Aliases:NS
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Query

WMI 이벤트 클래스를 식별하는 WQL(WMI 쿼리 언어)에서 다음과 같은 select * from __InstanceDeletionEvent쿼리를 지정합니다.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-SourceIdentifier

구독에 대해 선택한 이름을 지정합니다. 선택한 이름은 현재 세션에서 고유해야 합니다. 기본값은 Windows PowerShell에서 할당하는 GUID입니다.

이 매개 변수의 값은 구독자 개체의 SourceIdentifier 속성 값과 이 구독과 연결된 모든 이벤트 개체의 값에 나타납니다.

Type:String
Position:100
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SupportEvent

이 cmdlet이 이벤트 구독을 숨기고 있음을 나타냅니다. 현재 구독이 더 복잡한 이벤트 등록 메커니즘의 일부이며 독립적으로 검색해서는 안 되는 경우 이 매개 변수를 사용합니다.

SupportEvent 매개 변수를 사용하여 만든 구독을 보거나 취소하려면 and Unregister-Event cmdlet의 Force 매개 변수를 Get-EventSubscriber 지정합니다.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Timeout

Windows PowerShell에서 이 명령이 완료되기를 기다리는 시간을 지정합니다.

기본값인 0은 시간 제한이 없음을 의미하며 Windows PowerShell이 무기한 대기합니다.

Type:Int64
Aliases:TimeoutMSec
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

입력

None

개체를 이 cmdlet으로 파이프할 수 없습니다.

출력

None

이 cmdlet은 어떠한 출력도 생성하지 않습니다.

참고

Windows Vista 또는 이후 버전의 Windows 운영 체제에서 이 cmdlet을 사용하려면 관리자 권한으로 실행 옵션을 사용하여 Windows PowerShell을 시작합니다.

이벤트, 이벤트 구독 및 이벤트 큐는 현재 세션에만 존재합니다. 현재 세션을 닫으면 이벤트 큐가 해제되고카드 이벤트 구독이 취소됩니다.