Get-EventSubscriber
현재 세션의 이벤트 구독자를 가져옵니다.
구문
Get-EventSubscriber
[[-SourceIdentifier] <String>]
[-Force]
[<CommonParameters>]
Get-EventSubscriber
[-SubscriptionId] <Int32>
[-Force]
[<CommonParameters>]
Description
Get-EventSubscriber cmdlet은 현재 세션의 이벤트 구독자를 가져옵니다.
Register 이벤트 cmdlet을 사용하여 이벤트를 구독하면 이벤트 구독자가 Windows PowerShell 세션에 추가되고 구독한 이벤트가 발생할 때마다 이벤트 큐에 추가됩니다. 이벤트 구독을 취소하려면 Unregister-Event cmdlet을 사용하여 이벤트 구독자를 삭제합니다.
예제
예제 1: 타이머 이벤트에 대한 이벤트 구독자 가져오기
PS C:\> $Timer = New-Object Timers.Timer
PS C:\> $Timer | Get-Member -Type Event
PS C:\> Register-ObjectEvent -InputObject $Timer -EventName Elapsed -SourceIdentifier Timer.Elapsed
PS C:\> Get-EventSubscriber
PS C:\> $Timer = New-Object Timers.Timer
PS C:\> $Timer | Get-Member -Type Event
TypeName: System.Timers.Timer
Name MemberType Definition
---- ---------- ----------
Disposed Event System.EventHandler Disposed(System.Object, System.EventArgs)
Elapsed Event System.Timers.ElapsedEventHandler Elapsed(System.Object, System.Timers.ElapsedEventArgs) PS C:\> Register-ObjectEvent -InputObject $Timer -EventName Elapsed -SourceIdentifier Timer.Elapsed
PS C:\> Get-EventSubscriber
SubscriptionId : 4
SourceObject : System.Timers.Timer
EventName : Elapsed
SourceIdentifier : Timer.Elapsed
Action :
HandlerDelegate :
SupportEvent : False
ForwardEvent : False
이 예제에서는 Get-EventSubscriber 명령을 사용하여 타이머 이벤트에 대한 이벤트 구독자를 가져옵니다.
첫 번째 명령은 New-Object cmdlet을 사용하여 타이머 개체의 인스턴스를 만듭니다. 새 타이머 개체를 $Timer 변수에 저장합니다.
두 번째 명령은 Get-Member cmdlet을 사용하여 타이머 개체에 사용할 수 있는 이벤트를 표시합니다. 이 명령은 Get-Member cmdlet의 Type 매개 변수를 Event 값과 함께 사용합니다.
세 번째 명령은 Register-ObjectEvent cmdlet을 사용하여 타이머 개체의 Elapsed 이벤트에 등록합니다.
네 번째 명령은 Get-EventSubscriber cmdlet을 사용하여 Elapsed 이벤트에 대한 이벤트 구독자를 가져옵니다.
예제 2: 이벤트 구독자의 Action 속성에서 PSEventJob의 동적 모듈 사용
PS C:\> $Timer = New-Object Timers.Timer
PS C:\> $Timer.Interval = 500
PS C:\> Register-ObjectEvent -InputObject $Timer -EventName Elapsed -SourceIdentifier Timer.Random -Action { $Random = Get-Random -Min 0 -Max 100 }
Id Name State HasMoreData Location Command
-- ---- ----- ----------- -------- -------
3 Timer.Random NotStarted False $Random = Get-Random ...
PS C:\> $Timer.Enabled = $True
PS C:\> $Subscriber = Get-EventSubscriber -SourceIdentifier Timer.Random
PS C:\> ($Subscriber.action).gettype().fullname
System.Management.Automation.PSEventJob
PS C:\> $Subscriber.action | Format-List -Property *
State : Running
Module : __DynamicModule_6b5cbe82-d634-41d1-ae5e-ad7fe8d57fe0
StatusMessage :
HasMoreData : True
Location :
Command : $random = Get-Random -Min 0 -Max 100
JobStateInfo : Running
Finished : System.Threading.ManualResetEvent
InstanceId : 88944290-133d-4b44-8752-f901bd8012e2
Id : 1
Name : Timer.Random
ChildJobs : {}
...
PS C:\> & $Subscriber.action.module {$Random}
96
PS C:\> & $Subscriber.action.module {$Random}
23
이 예제에서는 이벤트 구독자의 Action 속성에서 PSEventJob 개체에서 동적 모듈을 사용하는 방법을 보여 줍니다.
첫 번째 명령은 New-Object cmdlet을 사용하여 타이머 개체를 만듭니다. 두 번째 명령은 타이머의 간격을 500(밀리초)으로 설정합니다.
세 번째 명령은 Register-ObjectEvent cmdlet을 사용하여 타이머 개체의 경과된 이벤트를 등록합니다. 이 명령에는 이벤트를 처리하는 작업이 포함됩니다. 타이머 간격이 경과할 때마다 이벤트가 발생하고 작업의 명령이 실행됩니다. 이 경우 Get-Random cmdlet은 0에서 100 사이의 난수를 생성하고 $Random 변수에 저장합니다. 이벤트의 원본 식별자는 Timer.Random입니다.
Register-ObjectEvent 명령에서 Action 매개 변수를 사용하는 경우 이 명령은 작업을 나타내는 PSEventJob 개체를 반환합니다.
네 번째 명령은 타이머를 사용하도록 설정합니다.
다섯 번째 명령은 Get-EventSubscriber cmdlet을 사용하여 Timer.Random 이벤트의 이벤트 구독자를 가져옵니다. 이벤트 구독자 개체를 $Subscriber 변수에 저장합니다.
여섯 번째 명령은 이벤트 구독자 개체의 Action 속성에 PSEventJob 개체가 포함되어 있음을 보여 줍니다. 실제로 Register-ObjectEvent 명령이 반환한 것과 동일한 PSEventJob 개체가 포함됩니다.
일곱 번째 명령은 Format-List cmdlet을 사용하여 목록의 Action 속성에 PSEventJob 개체의 모든 속성을 표시합니다. 결과는 PSEventJob 개체에 작업을 구현하는 동적 스크립트 모듈을 포함하는 Module 속성이 있음을 보여줍니다.
나머지 명령은 호출 연산자(&)를 사용하여 모듈에서 명령을 호출하고 $Random 변수의 값을 표시합니다. 호출 연산자를 사용하여 내보내지 않은 명령을 포함하여 모듈의 모든 명령을 호출할 수 있습니다. 이 경우 명령은 Elapsed 이벤트가 발생할 때 생성되는 난수를 표시합니다.
모듈에 대한 자세한 내용은 about_Modules참조하세요.
매개 변수
-Force
이 cmdlet은 Register-ObjectEvent, Register-WmiEvent 및 Register-EngineEvent의 SupportEvent 매개 변수를 사용하여 숨겨진 이벤트에 대한 구독자를 포함하여 모든 이벤트 구독자를 가져옵니다.
형식: | SwitchParameter |
Position: | 1 |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-SourceIdentifier
이벤트 구독자만 가져오는 SourceIdentifier 속성 값을 지정합니다. 기본적으로 get-EventSubscriber 세션의 모든 이벤트 구독자를 가져옵니다. 와일드카드는 허용되지 않습니다. 이 매개 변수는 대/소문자를 구분합니다.
형식: | String |
Position: | 0 |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | True |
와일드카드 문자 허용: | False |
-SubscriptionId
이 cmdlet이 가져오는 구독 식별자를 지정합니다. 기본적으로 get-EventSubscriber 세션의 모든 이벤트 구독자를 가져옵니다.
형식: | Int32 |
별칭: | Id |
Position: | 0 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | True |
와일드카드 문자 허용: | False |
입력
None
이 cmdlet에 입력을 파이프할 수 없습니다.
출력
Get-EventSubscriber 각 이벤트 구독자를 나타내는 개체를 반환합니다.
참고
사용자 지정 이벤트를 만드는 New-Event cmdlet은 구독자를 생성하지 않습니다. 따라서 Get-EventSubscriber cmdlet은 이러한 이벤트에 대한 구독자 개체를 찾을 수 없습니다. 그러나 Register-EngineEvent cmdlet을 사용하여 이벤트를 전달하거나 작업을 지정하기 위해 사용자 지정 이벤트를 구독하는 경우 Get-EventSubscriber
Register-EngineEvent 생성할 구독자를 찾습니다. 이벤트, 이벤트 구독 및 이벤트 큐는 현재 세션에만 존재합니다. 현재 세션을 닫으면 이벤트 큐가 삭제되고 이벤트 구독이 취소됩니다.