현재 세션의 이벤트 가입자를 가져옵니다.

구문

Get-EventSubscriber [-SubscriptionId] <int> [-Force] [<CommonParameters>]

Get-EventSubscriber [[-SourceIdentifier] <string>] [-Force] [<CommonParameters>]

설명

Get-EventSubscriber cmdlet은 현재 세션의 이벤트 가입자를 가져옵니다.

Register event cmdlet을 사용하여 이벤트에 가입하는 경우 이벤트 가입자는 Windows PowerShell 세션에 추가되고 가입한 이벤트는 발생할 때마다 이벤트 큐에 추가됩니다. 이벤트 가입을 취소하려면 Unregister-Event cmdlet을 사용하여 이벤트 가입자를 삭제합니다.

매개 변수

-Force

Register-ObjectEvent, Register-WmiEvent 및 Register-EngineEvent의 SupportEvent 매개 변수를 사용하여 숨긴 이벤트에 대한 가입자를 포함하여 모든 이벤트 가입자를 가져옵니다.

필수 여부

false

위치

2

기본값

파이프라인 입력 적용 여부

false

와일드카드 문자 적용 여부

false

-SourceIdentifier <string>

지정된 SourceIdentifier 속성 값을 가진 이벤트 가입자만 가져옵니다. 기본적으로 Get-EventSubscriber는 세션의 모든 이벤트 가입자를 가져옵니다. 와일드카드는 사용할 수 없습니다. 이 매개 변수는 대/소문자를 구분합니다.

필수 여부

false

위치

1

기본값

All event subscribers

파이프라인 입력 적용 여부

true (ByPropertyName)

와일드카드 문자 적용 여부

false

-SubscriptionId <int>

지정한 가입 ID를 가진 PSSession만 가져옵니다. 기본적으로 Get-EventSubscriber는 세션의 모든 이벤트 가입자를 가져옵니다.

필수 여부

true

위치

1

기본값

없음

파이프라인 입력 적용 여부

true (ByPropertyName)

와일드카드 문자 적용 여부

false

<CommonParameters>

이 cmdlet은 -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer, -OutVariable 등의 일반 매개 변수를 지원합니다. 자세한 내용은 about_Commonparameters.

입력 및 출력

입력 유형은 cmdlet으로 파이프할 수 있는 개체의 유형입니다. 반환 유형은 cmdlet에서 반환되는 개체의 유형입니다.

입력

없음

입력을 이 cmdlet으로 파이프할 수 없습니다.

출력

System.Management.Automation.PSEventSubscriber

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

참고

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

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

예 1

C:\PS>$timer = New-Object Timers.Timer 

C:\PS> $timer | Get-Member -Type Event 

C:\PS> Register-ObjectEvent -inputObject $timer -EventName Elapsed -SourceIdentifier Timer.Elapsed

C:\PS> Get-EventSubscriber

C:\PS> $timer = New-Object Timers.Timer 

C:\PS> $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)

C:\PS> Register-ObjectEvent -InputObject $timer -EventName Elapsed -SourceIdentifier Timer.Elapsed

C:\PS> 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

C:\PS>$timer  = New-Object Timers.Timer

C:\PS> $timer.Interval = 500

C:\PS> 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 ...


C:\PS> $timer.Enabled = $true

C:\PS> $subscriber = Get-EventSubcriber -sourceIdentifer Timer.Random

C:\PS> ($subscriber.action).gettype().fullname
PSEventJob

C:\PS> $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     : {}
...

C:\PS> & $subscriber.action.module {$random}
96

C:\PS> & $subscriber.action.module {$random}
23

설명
-----------
이 예제에서는 이벤트 가입자의 Action 속성에서 PSEventJob 개체의 동적 모듈을 사용하는 방법을 보여 줍니다.

첫 번째 명령은 New-Object cmdlet을 사용하여 타이머 개체를 만들고 두 번째 명령은 타이머 간격을 500(밀리초)으로 설정합니다.

세 번째 명령은 Register-ObjectEvent cmdlet을 사용하여 타이머 개체의 Elapsed 이벤트를 등록합니다. 이 명령에는 이벤트를 처리하는 작업이 포함됩니다. 타이머 간격이 경과할 때마다 이벤트가 발생하고 작업의 명령이 실행됩니다. 이 경우 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를 참조하십시오.






참고 항목




목차