다음을 통해 공유


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에 입력을 파이프할 수 없습니다.

출력

PSEventSubscriber

Get-EventSubscriber 각 이벤트 구독자를 나타내는 개체를 반환합니다.

참고

  • 사용자 지정 이벤트를 만드는 New-Event cmdlet은 구독자를 생성하지 않습니다. 따라서 Get-EventSubscriber cmdlet은 이러한 이벤트에 대한 구독자 개체를 찾을 수 없습니다. 그러나 Register-EngineEvent cmdlet을 사용하여 이벤트를 전달하거나 작업을 지정하기 위해 사용자 지정 이벤트를 구독하는 경우 Get-EventSubscriber Register-EngineEvent 생성할 구독자를 찾습니다.

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