Get-EventSubscriber
Obtient tous les abonnés aux événements de la session active.
Syntaxe
Get-EventSubscriber [-SubscriptionId] <int> [-Force] [<CommonParameters>]
Get-EventSubscriber [[-SourceIdentifier] <string>] [-Force] [<CommonParameters>]
Description
L'applet de commande Get-EventSubscriber obtient les abonnés aux événements de la session active.
Lorsque vous vous abonnez à un événement à l'aide d'une applet de commande d'événement Register, un abonné est ajouté à votre session Windows PowerShell, et les événements auxquels vous êtes abonné sont ajoutés à votre file d'attente d'événements chaque fois qu'ils sont déclenchés. Pour annuler un abonnement aux événements, supprimez l'abonné à l'aide de l'applet de commande Unregister-Event.
Paramètres
-Force
Obtient tous les abonnés aux événements, notamment les abonnés aux événements cachés à l'aide du paramètre SupportEvent de Register-ObjectEvent, Register-WmiEvent et Register-EngineEvent.
Obligatoire ? |
false |
Position ? |
2 |
Valeur par défaut |
|
Accepter l'entrée de pipeline ? |
false |
Accepter les caractères génériques ? |
false |
-SourceIdentifier <string>
Obtient uniquement les abonnés aux événements possédant la valeur de propriété SourceIdentifier spécifiée. Par défaut, Get-EventSubscriber obtient tous les abonnés aux événements de la session. Les caractères génériques ne sont pas autorisés. Ce paramètre respecte la casse.
Obligatoire ? |
false |
Position ? |
1 |
Valeur par défaut |
All event subscribers |
Accepter l'entrée de pipeline ? |
true (ByPropertyName) |
Accepter les caractères génériques ? |
false |
-SubscriptionId <int>
Obtient uniquement l'identificateur d'abonnement spécifié. Par défaut, Get-EventSubscriber obtient tous les abonnés aux événements de la session.
Obligatoire ? |
true |
Position ? |
1 |
Valeur par défaut |
aucun |
Accepter l'entrée de pipeline ? |
true (ByPropertyName) |
Accepter les caractères génériques ? |
false |
<CommonParameters>
Cette applet de commande prend en charge les paramètres courants : -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer et -OutVariable. Pour plus d'informations, consultez about_Commonparameters.
Entrées et sorties
Le type d'entrée est le type des objets que vous pouvez diriger vers l'applet de commande. Le type de retour est le type des objets que l'applet de commande retourne.
Entrées |
Aucun Vous ne pouvez pas diriger d'entrée vers cette applet de commande. |
Sorties |
System.Management.Automation.PSEventSubscriber Get-EventSubscriber retourne un objet représentant chaque abonné. |
Remarques
L'applet de commande New-Event, qui crée un événement personnalisé, ne génère pas d'abonné. Par conséquent, l'applet de commande Get-EventSubscriber ne trouvera pas d'objet abonné pour ces événements. Toutefois, si vous utilisez l'applet de commande Register-EngineEvent pour vous abonner à un événement personnalisé (pour transférer l'événement ou spécifier une action), Get-EventSubscriber recherchera l'abonné généré par Register-EngineEvent.
Les événements, les abonnements aux événements et la file d'attente d'événements existent uniquement dans la session active. Si vous fermez la session active, la file d'attente des événements est ignorée et l'abonnement aux événements est annulé.
Exemple 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
Description
-----------
Cet exemple utilise une commande Get-EventSubscriber pour obtenir l'abonné à un événement de minuteur.
La première commande utilise l'applet de commande New-Object pour créer une instance d'un objet minuteur. Elle enregistre le nouvel objet minuteur dans la variable $timer.
La deuxième commande utilise l'applet de commande Get-Member pour afficher les événements disponibles pour les objets minuteur. Elle utilise le paramètre Type de l'applet de commande Get-Member avec la valeur Event.
La troisième commande utilise l'applet de commande Register-ObjectEvent pour inscrire l'événement Elapsed sur l'objet minuteur.
La commande quatrième utilise l'applet de commande Get-EventSubscriber pour obtenir l'abonné à l'événement Elapsed.
Exemple 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
Description
-----------
Cet exemple montre comment utiliser le module dynamique de l'objet PSEventJob de la propriété Action de l'abonné.
La première commande utilise l'applet de commande New-Object pour créer un objet minuteur (Timer). La deuxième commande définit l'intervalle du minuteur à 500 (millisecondes).
La troisième commande utilise l'applet de commande Register-ObjectEvent pour inscrire l'événement Elapsed de l'objet minuteur. Elle inclut une action qui gère l'événement. Chaque fois que l'intervalle du minuteur s'écoule, un événement est déclenché et les commandes spécifiées dans Action s'exécutent. Dans ce cas, l'applet de commande Get-Random génère un nombre aléatoire compris entre 0 et 100, et l'enregistre dans la variable $random. L'identificateur source de l'événement est Timer.Random.
Lorsque vous utilisez un paramètre Action dans une commande Register-ObjectEvent, la commande retourne un objet PSEventJob qui représente l'action.
La quatrième commande active le minuteur.
La cinquième commande utilise l'applet de commande Get-EventSubscriber pour obtenir l'abonné à l'événement Timer.Random. Elle enregistre l'objet abonné dans la variable $subscriber.
La sixième commande indique que la propriété Action de l'objet abonné contient un objet PSEventJob. En fait, il contient le même objet PSEventJob que celui retourné par la commande Register-ObjectEvent.
La septième commande utilise l'applet de commande Format-List pour afficher toutes les propriétés de l'objet PSEventJob de la propriété Action dans une liste. Le résultat révèle que l'objet PSEventJob a une propriété Module contenant un module de script dynamique qui implémente l'action.
Les commandes restantes utilisent l'opérateur d'appel (&) pour appeler la commande dans le module et afficher la valeur de la variable $random. Vous pouvez utiliser l'opérateur d'appel pour appeler toute commande dans un module, notamment les commandes qui ne sont pas exportées. Dans ce cas, les commandes indiquent le nombre aléatoire généré lorsque l'événement Elapsed se produit.
Pour plus d'informations sur les modules, consultez about_Modules.
Voir aussi
Concepts
Register-ObjectEvent
Register-EngineEvent
Register-WmiEvent
Unregister-Event
Get-Event
New-Event
Remove-Event
Wait-Event