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-Job
및 Receive-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을 시작합니다.
이벤트, 이벤트 구독 및 이벤트 큐는 현재 세션에만 존재합니다. 현재 세션을 닫으면 이벤트 큐가 해제되고카드 이벤트 구독이 취소됩니다.
PowerShell
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기