Megosztás a következőn keresztül:


Register-ObjectEvent

Feliratkozik a Microsoft .NET Framework-objektum által létrehozott eseményekre.

Syntax

Default (Alapértelmezett)

Register-ObjectEvent
    [-InputObject] <PSObject>
    [-EventName] <String>
    [[-SourceIdentifier] <String>]
    [[-Action] <ScriptBlock>]
    [-MessageData <PSObject>]
    [-SupportEvent]
    [-Forward]
    [-MaxTriggerCount <Int32>]
    [<CommonParameters>]

Description

A Register-ObjectEvent parancsmag feliratkozik a helyi számítógépen vagy egy távoli számítógépen futó .NET-objektumok által létrehozott eseményekre.

Az előfizetett esemény létrehozásakor a rendszer hozzáadja azt az eseménysorhoz a munkamenetben. Ha eseményeket szeretne lekérni az eseménysorba, használja a Get-Event parancsmagot.

A Register-ObjectEvent paramétereit használva megadhatja az események tulajdonságértékeit, amelyek segíthetnek azonosítani az eseményt az üzenetsorban. A Művelet paraméterrel megadhatja a feliratkozáskor végrehajtandó műveleteket, és a Forward paraméterrel távoli eseményeket küldhet az eseménysorba a helyi munkamenetben.

Amikor előfizet egy eseményre, a rendszer hozzáad egy esemény-előfizetőt a munkamenethez. Az esemény előfizetőinek a munkamenetben való lekéréséhez használja a Get-EventSubscriber parancsmagot. Az előfizetés lemondásához használja a Unregister-Event parancsmagot, amely törli az esemény-előfizetőt a munkamenetből.

Példák

1. példa: Feliratkozás eseményekre új folyamat indításakor

Ez a példa előfizet egy új folyamat indításakor létrehozott eseményekre.

A parancs a ManagementEventWatcher objektumot használja EventArrived események lekéréséhez. A lekérdezési objektum azt határozza meg, hogy az események a Win32_Process osztály példánylétrehozó eseményei.

$queryParameters = '__InstanceCreationEvent', (New-Object TimeSpan 0,0,1),
    "TargetInstance isa 'Win32_Process'"
$Query = New-Object System.Management.WqlEventQuery -ArgumentList $queryParameters
$ProcessWatcher = New-Object System.Management.ManagementEventWatcher $Query
Register-ObjectEvent -InputObject $ProcessWatcher -EventName "EventArrived"

2. példa: Eseményre válaszoló művelet megadása

Művelet megadásakor a rendszer nem adja hozzá a létrehozott eseményeket az eseménysorhoz. Ehelyett a művelet válaszol az eseményre. Ebben a példában, amikor egy példánylétrehozási esemény egy új folyamat indítását jelzi, egy új ProcessCreated esemény jön létre.

$queryParameters = '__InstanceCreationEvent', (New-Object TimeSpan 0,0,1),
    "TargetInstance isa 'Win32_Process'"
$Query = New-Object System.Management.WqlEventQuery -ArgumentList $queryParameters
$ProcessWatcher = New-Object System.Management.ManagementEventWatcher $query
$newEventArgs = @{
    SourceIdentifier = 'PowerShell.ProcessCreated'
    Sender = $Sender
    EventArguments = $EventArgs.NewEvent.TargetInstance
}
$Action = { New-Event @newEventArgs }
Register-ObjectEvent -InputObject $ProcessWatcher -EventName "EventArrived" -Action $Action
Id   Name               PSJobTypeName   State       HasMoreData   Location   Command
--   ----               -------------   -----       -----------   --------   -------
 5   3db2d67a-efff-...                 NotStarted   False                    New-Event @newEventArgs

A művelet a $Sender és $EventArgs automatikus változókat használja, amelyek csak eseményműveletek esetén vannak feltöltve.

A Register-ObjectEvent parancs egy feladatobjektumot ad vissza, amely a műveletet jelöli, amely háttérfeladatként fut. A háttérfeladat kezeléséhez használhatja a Feladat parancsmagokat, például Get-Job és Receive-Job. További információért lásd about_Jobs.

3. példa: Feliratkozás távoli számítógépek objektumeseményeire

Ez a példa bemutatja, hogyan iratkozhat fel objektumeseményekre távoli számítógépeken. Ez a példa a Enable-ProcessCreationEvent szkriptfájlban definiált ProcessCreationEvent.ps1 függvényt használja. Ez a szkript a példában szereplő összes számítógép számára elérhető.

# ProcessCreationEvent.ps1
function  Enable-ProcessCreationEvent {
    $queryParameters = "__InstanceCreationEvent", (New-Object TimeSpan 0,0,1),
        "TargetInstance isa 'Win32_Process'"
    $Query = New-Object System.Management.WqlEventQuery -ArgumentList $queryParameters

    $objectEventArgs = @{
        Input = New-Object System.Management.ManagementEventWatcher $Query
        EventName = 'EventArrived'
        SourceIdentifier = 'WMI.ProcessCreated'
        MessageData = 'Test'
        Forward = $True
    }
    Register-ObjectEvent @objectEventArgs
}

$S = New-PSSession -ComputerName "Server01, Server02"
Invoke-Command -Session $S -FilePath ProcessCreationEvent.ps1
Invoke-Command -Session $S { Enable-ProcessCreationEvent }

Elsőként két távoli számítógépen hozunk létre PSSessions, és mentjük őket a $S változóba. Ezután a Invoke-Command parancsmag futtatja a ProcessCreationEvent.ps1 szkriptet az $Sösszes PSSessions fájljában. Ez a művelet létrehozza a Enable-ProcessCreationEvent függvényt a távoli munkamenetekben. Végül a távoli munkamenetekben futtatjuk a Enable-ProcessCreationEvent függvényt.

A függvény tartalmaz egy Register-ObjectEvent parancsot, amely feliratkozik a példánylétrehozás eseményeire az Win32_Process objektumon a ManagementEventWatcher objektumon és annak EventArrived eseményén keresztül.

4. példa: A dinamikus modul használata a PSEventJob objektumban

Ez a példa bemutatja, hogyan használhatja a dinamikus modult a PSEventJob objektumban, amely akkor jön létre, amikor egy művelet szerepel egy eseményregisztrációban. Először létrehozunk és engedélyezünk egy időzítőobjektumot, majd az időzítő intervallumát 500-ra (ezredmásodpercre) állítjuk. A Register-ObjectEvent parancsmag regisztrálja az időzítőobjektum Eltelt eseményét. Az PSEventJob objektum a $Job változóba kerül, és az esemény-előfizető Művelet tulajdonságában is elérhető. További információ: Get-EventSubscriber.

Amikor az időzítő időköze el nem telik, a rendszer eseményt indít el, és végrehajtja a műveletet. Ebben az esetben a Get-Random parancsmag véletlenszerű számot hoz létre 0 és 100 között, és menti a $Random változóba.

$Timer = New-Object Timers.Timer
$Timer.Interval = 500
$Timer.Enabled = $True
$objectEventArgs = @{
    InputObject = $Timer
    EventName = 'Elapsed'
    SourceIdentifier = 'Timer.Random'
    Action = {$Random = Get-Random -Min 0 -Max 100}
}
$Job = Register-ObjectEvent @objectEventArgs
$Job | Format-List -Property *
& $Job.module {$Random}
& $Job.module {$Random}
State         : Running
Module        : __DynamicModule_53113769-31f2-42dc-830b-8749325e28d6
StatusMessage :
HasMoreData   : True
Location      :
Command       : $Random = Get-Random -Min 0 -Max 100
JobStateInfo  : Running
Finished      : System.Threading.ManualResetEvent
InstanceId    : 47b5ec9f-bfe3-4605-860a-4674e5d44ca8
Id            : 7
Name          : Timer.Random
ChildJobs     : {}
PSBeginTime   : 6/27/2019 10:19:06 AM
PSEndTime     :
PSJobTypeName :
Output        : {}
Error         : {}
Progress      : {}
Verbose       : {}
Debug         : {}
Warning       : {}
Information   : {}
60
47

A PSEventJob rendelkezik egy modul tulajdonságával, amely egy dinamikus szkriptmodult tartalmaz, amely implementálja a műveletet. A hívó operátor (&) használatával meghívjuk a modulban lévő parancsot a $Random változó értékének megjelenítéséhez.

A modulokkal kapcsolatos további információkért lásd: about_Modules.

Paraméterek

-Action

Megadja az esemény kezelésére vonatkozó parancsokat. A művelet parancsai esemény létrehozásakor futnak, ahelyett, hogy az eseményt az eseménysorba küldik. A parancsokat kapcsos zárójelekbe ({ }) ágyazva hozzon létre egy szkriptblokkot.

A Action paraméter értéke magában foglalhatja a $Event, $EventSubscriber, $Sender, $EventArgsés $Args automatikus változókat. Ezek a változók információt nyújtanak az eseményről a Művelet szkriptblokknak. További információért tekintse meg az *about_Automatic_Variables* témakört a éscímkék alatt.

Művelet megadásakor Register-ObjectEvent egy eseményfeladat-objektumot ad vissza, amely az adott műveletet jelöli. A Feladat parancsmagokkal kezelheti az eseményfeladatot.

Paramétertulajdonságok

Típus:ScriptBlock
Alapértelmezett érték:None
Támogatja a helyettesítő karaktereket:False
DontShow:False

Paraméterkészletek

(All)
Position:101
Kötelező:False
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:False
Fennmaradó argumentumokból származó érték:False

-EventName

Azt az eseményt adja meg, amelyre feliratkozik.

Ennek a paraméternek az értéke annak az eseménynek a neve, amelyet a .NET-objektum elérhetővé tesz. A ManagementEventWatcher osztály például EventArrived és Leállítottnevű eseményekkel rendelkezik. Az esemény eseménynevének megkereséséhez használja a Get-Member parancsmagot.

Paramétertulajdonságok

Típus:String
Alapértelmezett érték:None
Támogatja a helyettesítő karaktereket:False
DontShow:False

Paraméterkészletek

(All)
Position:1
Kötelező:True
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:False
Fennmaradó argumentumokból származó érték:False

-Forward

Azt jelzi, hogy a parancsmag egy távoli munkamenetbe küldi az előfizetés eseményeit. Ezt a paramétert akkor használja, ha távoli számítógépen vagy távoli munkamenetben regisztrál eseményekre.

Paramétertulajdonságok

Típus:SwitchParameter
Alapértelmezett érték:None
Támogatja a helyettesítő karaktereket:False
DontShow:False

Paraméterkészletek

(All)
Position:Named
Kötelező:False
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:False
Fennmaradó argumentumokból származó érték:False

-InputObject

Megadja az eseményeket létrehozó .NET-objektumot. Adjon meg egy változót, amely tartalmazza az objektumot, vagy írjon be egy parancsot vagy kifejezést, amely lekéri az objektumot.

Paramétertulajdonságok

Típus:PSObject
Alapértelmezett érték:None
Támogatja a helyettesítő karaktereket:False
DontShow:False

Paraméterkészletek

(All)
Position:0
Kötelező:True
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:False
Fennmaradó argumentumokból származó érték:False

-MaxTriggerCount

Megadja, hogy egy esemény legfeljebb hány alkalommal aktiválható.

Paramétertulajdonságok

Típus:Int32
Alapértelmezett érték:None
Támogatja a helyettesítő karaktereket:False
DontShow:False

Paraméterkészletek

(All)
Position:Named
Kötelező:False
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:False
Fennmaradó argumentumokból származó érték:False

-MessageData

Megadja az esemény-előfizetéshez társítandó további adatokat. Ennek a paraméternek az értéke az előfizetéshez társított összes esemény MessageData tulajdonságában jelenik meg.

Paramétertulajdonságok

Típus:PSObject
Alapértelmezett érték:None
Támogatja a helyettesítő karaktereket:False
DontShow:False

Paraméterkészletek

(All)
Position:Named
Kötelező:False
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:False
Fennmaradó argumentumokból származó érték:False

-SourceIdentifier

Megadja az előfizetéshez kiválasztott nevet. A kiválasztott névnek egyedinek kell lennie az aktuális munkamenetben. Az alapértelmezett érték a PowerShell által hozzárendelt GUID.

Ennek a paraméternek az értéke az előfizetői objektum SourceIdentifier tulajdonságában és az előfizetéshez társított összes eseményobjektumban jelenik meg.

Paramétertulajdonságok

Típus:String
Alapértelmezett érték:None
Támogatja a helyettesítő karaktereket:False
DontShow:False

Paraméterkészletek

(All)
Position:100
Kötelező:False
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:False
Fennmaradó argumentumokból származó érték:False

-SupportEvent

Azt jelzi, hogy a parancsmag elrejti az esemény-előfizetést. Ezt a paramétert akkor használja, ha az aktuális előfizetés egy összetettebb eseményregisztrációs mechanizmus része, és nem szabad egymástól függetlenül felderíteni.

Az SupportEvent paraméterrel létrehozott előfizetés megtekintéséhez vagy lemondásához használja a és Get-EventSubscriber parancsmagok Unregister-Event paraméterét.

Paramétertulajdonságok

Típus:SwitchParameter
Alapértelmezett érték:None
Támogatja a helyettesítő karaktereket:False
DontShow:False

Paraméterkészletek

(All)
Position:Named
Kötelező:False
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:False
Fennmaradó argumentumokból származó érték:False

CommonParameters

Ez a parancsmag a következő gyakori paramétereket támogatja: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction és -WarningVariable. További információért lásd about_CommonParameters.

Bevitelek

None

Az objektumokat nem lehet Register-ObjectEvent.

Kimenetek

None or System.Management.Automation.PSEventJob

A Action paraméter használatakor Register-ObjectEvent egy System.Management.Automation.PSEventJob objektumot ad vissza. Ellenkező esetben nem hoz létre kimenetet.

Jegyzetek

Az események, az esemény-előfizetések és az eseménysor csak az aktuális munkamenetben léteznek. Ha bezárja az aktuális munkamenetet, a rendszer elveti az eseménysort, és megszakítja az esemény-előfizetést.