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 Get-EventSubscriber
de commande obtient les abonnés aux événements dans la session active.
Quand vous vous abonnez à un événement à l'aide d'une applet de commande d'événement Register, un abonné aux événements est ajouté à votre session Windows PowerShell et les événements auxquels vous vous êtes abonné sont ajoutés à la 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 Unregister-Event
commande.
Exemples
Exemple 1 : Obtenir l’abonné aux événements d’un minuteur
Cet exemple utilise une Get-EventSubscriber
commande pour obtenir l’abonné à l’événement d’un minuteur.
La première commande utilise l’applet New-Object
de commande pour créer une instance d’un objet minuteur. Il enregistre le nouvel objet minuteur dans la $Timer
variable.
La deuxième commande utilise l’applet Get-Member
de commande pour afficher les événements disponibles pour les objets du minuteur. La commande utilise le paramètre Type de l’applet Get-Member
de commande avec la valeur Event.
$Timer = New-Object Timers.Timer
$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)
Register-ObjectEvent -InputObject $Timer -EventName Elapsed -SourceIdentifier Timer.Elapsed
Get-EventSubscriber
SubscriptionId : 4
SourceObject : System.Timers.Timer
EventName : Elapsed
SourceIdentifier : Timer.Elapsed
Action :
HandlerDelegate :
SupportEvent : False
ForwardEvent : False
La troisième commande utilise l’applet Register-ObjectEvent
de commande pour s’inscrire à l’événement Écoulé sur l’objet minuteur.
La quatrième commande utilise l’applet Get-EventSubscriber
de commande pour obtenir l’abonné à l’événement Écoulé .
Exemple 2 : Utiliser le module dynamique dans PSEventJob dans la propriété Action de l’abonné à l’événement
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 New-Object
de commande pour créer un objet minuteur. La deuxième commande définit l'intervalle de la minuterie à 500 millisecondes.
$Timer = New-Object Timers.Timer
$Timer.Interval = 500
$params = @{
InputObject = $Timer
EventName = 'Elapsed'
SourceIdentifier = 'Timer.Random'
Action = { $Random = Get-Random -Min 0 -Max 100 }
}
Register-ObjectEvent @params
Id Name State HasMoreData Location Command
-- ---- ----- ----------- -------- -------
3 Timer.Random NotStarted False $Random = Get-Random ...
$Timer.Enabled = $True
$Subscriber = Get-EventSubscriber -SourceIdentifier Timer.Random
($Subscriber.action).gettype().fullname
System.Management.Automation.PSEventJob
$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 : {}
...
& $Subscriber.action.module {$Random}
La troisième commande utilise l’applet Register-ObjectEvent
de commande pour inscrire l’événement Écoulé de l’objet minuteur. La commande comprend une action qui gère l'événement. Chaque fois que l'intervalle de la minuterie est dépassé, un événement est déclenché et les commandes de l'action s'exécutent. Dans ce cas, l’applet Get-Random
de commande génère un nombre aléatoire compris entre 0 et 100 et l’enregistre dans la $Random
variable. L'identificateur source de l'événement est Timer.Random.
Lorsque vous utilisez un paramètre Action dans une Register-ObjectEvent
commande, la commande renvoie un objet PSEventJob qui représente l’action.
La quatrième commande active la minuterie.
La cinquième commande utilise l’applet Get-EventSubscriber
de commande pour obtenir l’abonné à l’événement Timer.Random . Il enregistre l’objet abonné aux événements dans la $Subscriber
variable.
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 Register-ObjectEvent
commande retournée.
La septième commande utilise l’applet Format-List
de commande 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 une commande dans un module, y compris des commandes qui ne sont pas exportées. Dans ce cas, les commandes montrent le nombre aléatoire qui est généré quand l'événement Elapsed se produit.
Pour plus d’informations sur les modules, consultez about_Modules.
Exemple 3 : Obtenir les abonnés aux événements masqués
Cet exemple enregistre un abonné d’événement pour l’événement PowerShell.Exiting . L’abonnement est inscrit à l’aide du paramètre SupportEvent , qui masque l’abonné à l’événement de la sortie par défaut de l’applet Get-EventSubscriber
de commande. Vous devez utiliser le paramètre Force pour obtenir tous les abonnés aux événements, y compris les abonnés masqués.
Register-EngineEvent -SourceIdentifier PowerShell.Exiting -SupportEvent -Action {
Get-History | Export-Clixml d:\temp\history.clixml
}
Get-EventSubscriber # No output - must use -Force
Get-EventSubscriber -Force
SubscriptionId : 1
SourceObject :
EventName :
SourceIdentifier : PowerShell.Exiting
Action : System.Management.Automation.PSEventJob
HandlerDelegate :
SupportEvent : True
ForwardEvent : False
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 les objets vers cette applet de commande.
Sorties
Cette applet de commande retourne un objet PSEventSubscriber pour chaque abonné aux événements.
Notes
L’applet New-Event
de commande, qui crée un événement personnalisé, ne génère pas d’abonné. Par conséquent, l’applet Get-EventSubscriber
de commande ne trouve pas d’objet abonné pour ces événements. Toutefois, si vous utilisez l’applet Register-EngineEvent
de commande pour vous abonner à un événement personnalisé (afin de transférer l’événement ou de spécifier une action), Get-EventSubscriber
recherche 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 cette session, la file d'attente d'événements est ignorée et l'abonnement aux événements est annulé.