Register-ObjectEvent
Feliratkozik a Microsoft .NET-keretrendszer objektum által létrehozott eseményekre.
Syntax
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 paraméterekkel Register-ObjectEvent
megadhatja az események tulajdonságértékeit, amelyek segíthetnek azonosítani az eseményt az üzenetsorban. A Művelet paraméterrel megadhatja azokat a műveleteket is, amelyeket egy előfizetett esemény létrehozásakor hajthat végre, és a Továbbítás 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 az 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ényt hoz létre, amely azt jelzi, hogy egy új folyamat indul el, 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 azokat az $Sender
$EventArgs
automatikus változókat használja, amelyek csak eseményműveletekhez 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
az és Receive-Job
a parancsmagokat. További információkért lásd a feladatokat ismertető szakaszt.
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 függvényt ProcessCreationEvent.ps1
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 }
Az első két távoli számítógépen hozunk létre PSSessions-t , és mentjük őket a $S
változóba. Ezután a Invoke-Command
parancsmag futtatja a ProcessCreationEvent.ps1
szkriptet az egyes PSSessions in $S
. Ez a művelet létrehozza a függvényt Enable-ProcessCreationEvent
a távoli munkamenetekben.
Végül a függvényt a Enable-ProcessCreationEvent
távoli munkamenetekben futtatjuk.
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 P Standard kiadás ventJob objektumban
Ez a példa bemutatja, hogyan használhatja a dinamikus modult a P Standard kiadás ventJob objektumban, amely akkor jön létre, amikor 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. A P Standard kiadás ventJob objektumot a rendszer a $Job
változóba menti, é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 P Standard kiadás ventJob modultulajdonság egy dinamikus szkriptmodult tartalmaz, amely implementálja a műveletet. A hívó operátor (&
) használatával meghívjuk a modul parancsát a változó értékének $Random
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 Művelet paraméter értéke a , $EventSubscriber
, $Sender
, $EventArgs
, és $Args
automatikus változókat is tartalmazhat$Event
. Ezek a változók információkat nyújtanak az eseményről a Műveleti szkript blokknak. További információ: about_Automatic_Variables.
Ha megad egy műveletet, Register-ObjectEvent
egy eseményfeladat-objektumot ad vissza, amely az adott műveletet jelöli. A Feladat parancsmagokkal kezelheti az eseményfeladatot.
Type: | ScriptBlock |
Position: | 101 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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 Stop nevű eseményekkel rendelkezik. Az esemény eseménynevének megkereséséhez használja a Get-Member
parancsmagot.
Type: | String |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | 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.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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.
Type: | PSObject |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-MaxTriggerCount
Megadja, hogy egy esemény legfeljebb hány alkalommal aktiválható.
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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.
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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.
Type: | String |
Position: | 100 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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.
A SupportEvent paraméterrel létrehozott előfizetés megtekintéséhez vagy lemondásához használja a parancsmagok Kényszerítése paraméterét Get-EventSubscriber
Unregister-Event
.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Bevitelek
None
Ehhez a parancsmaghoz nem lehet objektumokat csövezni.
Kimenetek
None
Ez a parancsmag alapértelmezés szerint nem ad vissza kimenetet.
A Művelet paraméter használatakor ez a parancsmag egy P Standard kiadás ventJob 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.
Kapcsolódó hivatkozások
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: