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
Ehhez a parancsmaghoz nem lehet objektumokat csövezni.
Kimenetek
None
Ez a parancsmag alapértelmezés szerint nem ad vissza kimenetet.
PSEventJob
A Action paraméter használatakor ez a parancsmag egy PSEventJob objektumot ad vissza.
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.