Get-EventSubscriber
Obtient les abonnés aux événements dans la session active.
Syntaxe
Get-EventSubscriber
[[-SourceIdentifier] <String>]
[-Force]
[<CommonParameters>]
Get-EventSubscriber
[-SubscriptionId] <Int32>
[-Force]
[<CommonParameters>]
Description
L’applet de commande Get-EventSubscriber obtient les abonnés aux événements dans la session active.
Lorsque vous vous abonnez à un événement à l’aide d’une applet de commande Inscrire un événement, un abonné aux événements est ajouté à votre session Windows PowerShell et les événements auxquels vous 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’événement à l’aide de l’applet de commande Unregister-Event.
Exemples
Exemple 1 : Obtenir l’abonné aux événements d’un minuteur
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
Cet exemple utilise une commande Get-EventSubscriber pour obtenir l’abonné aux événements pour 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. Il 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 du minuteur.
La commande utilise le paramètre Type de l’applet de commande Get-Member
La troisième commande utilise l’applet de commande Register-ObjectEvent pour s’inscrire à l’événement Écoulé sur l’objet minuteur.
La quatrième commande utilise l’applet de commande Get-EventSubscriber pour obtenir l’abonné aux événements pour l’événement Écoulé.
Exemple 2 : Utiliser le module dynamique dans PSEventJob dans la propriété Action de l’abonné à l’événement
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
Cet exemple montre comment utiliser le module dynamique dans l’objet PSEventJob dans la propriété Action de l’abonné à l’événement.
La première commande utilise l’applet de commande New-Object pour créer un objet minuteur. La deuxième commande définit l’intervalle du minuteur sur 500 (millisecondes).
La troisième commande utilise l’applet de commande Register-ObjectEvent pour inscrire l’événement Écoulé de l’objet minuteur. La commande 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 de l’exécution de l’action. 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 renvoie 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é aux événements de l’événement Timer.Random. Il enregistre l’objet abonné aux événements dans la variable $Subscriber.
La sixième commande indique que la propriété Action de l’objet abonné à l’événement contient un objet PSEventJob. En fait, il contient le même objet PSEventJob que la commande Register-ObjectEvent retournée.
La septième commande utilise l’applet de commande Format-List pour afficher toutes les propriétés de l’objet PSEventJob dans la propriété Action d’une liste. Le résultat révèle que l’objet PSEventJob a une propriété Module qui contient 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 n’importe quelle commande dans un module, y compris les commandes qui ne sont pas exportées. Dans ce cas, les commandes affichent le nombre aléatoire généré lorsque l’événement Écoulé se produit.
Pour plus d’informations sur les modules, consultez about_Modules.
Paramètres
-Force
Indique que cette applet de commande obtient tous les abonnés aux événements, y compris les abonnés pour les événements masqués à l’aide du paramètre SupportEvent de Register-ObjectEvent, Register-WmiEvent et Register-EngineEvent.
Type: | SwitchParameter |
Position: | 1 |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-SourceIdentifier
Spécifie la valeur de la propriété SourceIdentifier qui obtient uniquement les abonnés aux événements. 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.
Type: | String |
Position: | 0 |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | True |
Accepter les caractères génériques: | False |
-SubscriptionId
Spécifie l’identificateur d’abonnement que cette applet de commande obtient. Par défaut, Get-EventSubscriber obtient tous les abonnés aux événements de la session.
Type: | Int32 |
Alias: | Id |
Position: | 0 |
Valeur par défaut: | None |
Obligatoire: | True |
Accepter l'entrée de pipeline: | True |
Accepter les caractères génériques: | False |
Entrées
None
Vous ne pouvez pas diriger l’entrée vers cette applet de commande.
Sorties
Get-EventSubscriber retourne un objet qui représente chaque abonné aux événements.
Notes
L’applet de commande New-Event, qui crée un événement personnalisé, ne génère pas d’abonné. Par conséquent, le Get-EventSubscriber cmdlet ne trouve 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é (afin de transférer l’événement ou de spécifier une action), Get-EventSubscriber trouve l’abonné qui Register-EngineEvent génère.
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 d’événements est ignorée et l’abonnement à l’événement est annulé.