Register-EngineEvent
PowerShell altyapısı ve New-Event cmdlet'i tarafından oluşturulan olaylara abonedir.
Sözdizimi
Default EnterprisePublishing
Register-EngineEvent
[-SourceIdentifier] <String>
[[-Action] <ScriptBlock>]
[-MessageData <PSObject>]
[-SupportEvent]
[-Forward]
[-MaxTriggerCount <Int32>]
[<CommonParameters>]
Description
Register-EngineEvent cmdlet'i, PowerShell altyapısı ve New-Event cmdlet'i tarafından üretilen olaylara abone olur. Olayı belirtmek için SourceIdentifier parametresini kullanın.
Bu cmdlet'i, OnIdle veya Çıkarken motor olaylarına ve New-Event cmdlet'i tarafından oluşturulan olaylara abone olmak için kullanabilirsiniz. Bu olaylar abone olmadan oturumunuzda olay kuyruğuna otomatik olarak eklenir. Ancak abone olmak olayları iletmenize, olaylara yanıt vermek için bir eylem belirtmenize ve aboneliği iptal etmenizi sağlar.
Bir olaya abone olduğunuzda, oturumunuza bir olay abonesi eklenir. Oturumdaki olay abonelerini almak için Get-EventSubscriber cmdlet'ini kullanın. Aboneliği iptal etmek için, olay abonesini oturumdan silen Unregister-Event cmdlet'ini kullanın.
Abone olunan etkinlik oluşturulduğunda, oturumunuzdaki etkinlik kuyruğuna eklenir. Olay kuyruğundaki olayları almak için Get-Event cmdlet'ini kullanın.
Örnekler
Örnek 1: Uzaktaki bilgisayarlarda PowerShell motoru olayını kaydetme
Bu örnek, iki uzak bilgisayarda bir PowerShell motoru olayına kaydolur.
$S = New-PSSession -ComputerName "Server01, Server02"
Invoke-Command -Session $S {
Register-EngineEvent -SourceIdentifier ([System.Management.Automation.PSEngineEvent]::Exiting) -Forward
}
New-PSSession, uzak bilgisayarların her birinde kullanıcı tarafından yönetilen bir oturum (PSSession) oluşturur. Invoke-Command cmdlet'i uzak oturumlarda Register-EngineEvent komutunu çalıştırır.
Register-EngineEvent olayı tanımlamak için SourceIdentifier parametresini kullanır.
İlet parametresi, motorun olayları uzak oturumdan yerel oturuma iletmesi gerektiğini söyler.
Örnek 2: Çıkış olayı gerçekleştiğinde belirtilen eylemi gerçekleştirme
Bu örnekte, Register-EngineEvent olayı gerçekleştiğinde belirli bir eyleme geçmek için nasıl çalıştırılacak gösterilmektedir.
Register-EngineEvent -SourceIdentifier PowerShell.Exiting -SupportEvent -Action {
Get-History | Export-Clixml $HOME\history.clixml
}
Olay aboneliğini gizlemek için SupportEvent parametresi eklenir. PowerShell'den çıkıldığında, bu durumda, çıkış oturumundaki komut geçmişi kullanıcının $HOME dizininde bir XML dosyası dışarı aktarılır.
Örnek 3: Kullanıcı tanımlı olay oluşturma ve olaya abone olma
Bu örnek, kaynakMyEventSource Register-EngineEvent, aboneliği oluşturmak için kullanılır.
Eylemi parametresinin betik bloğu, olay verilerini bir metin dosyasına kaydeder.
Register-EngineEvent -SourceIdentifier MyEventSource -Action {
"Event: {0}" -f $Event.MessageData | Out-File C:\temp\MyEvents.txt -Append
}
Start-Job -Name TestJob -ScriptBlock {
while ($true) {
Register-EngineEvent -SourceIdentifier MyEventSource -Forward
Start-Sleep -Seconds 2
"Doing some work..."
$newEventSplat = @{
SourceIdentifier = 'MyEventSource'
MessageData = ("{0} - Work done..." -f (Get-Date))
}
New-Event @newEventSplat
}
}
Start-Sleep -Seconds 4
Get-EventSubscriber
Get-Job
SubscriptionId : 12
SourceObject :
EventName :
SourceIdentifier : MyEventSource
Action : System.Management.Automation.PSEventJob
HandlerDelegate :
SupportEvent : False
ForwardEvent : False
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
18 MyEventSource Running True …
19 TestJob BackgroundJob Running True localhost …
Register-EngineEvent, İş Kimliği 18'i oluşturdu.
Start-Job Görev Kimliği 19 oluşturuldu. Örnek 4'te olay aboneliğini ve işleri iptal edip log dosyasını inceleyeceğiz.
Örnek 4: Olayların kaydını kaldırma ve işleri temizleme
Bu, Örnek 3'ün devamıdır. Bu örnekte, birkaç olayın gerçekleşmesini sağlamak için 10 saniye bekleriz. Ardından olay aboneliğinin kaydını kaldırıyoruz.
PS> Start-Sleep -Seconds 10
PS> Get-EventSubscriber | Unregister-Event
PS> Get-Job
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
18 MyEventSource Stopped False …
19 TestJob BackgroundJob Running True localhost …
PS> Stop-Job -Id 19
PS> Get-Job | Remove-Job
PS> Get-Content C:\temp\MyEvents.txt
Event: 2/18/2020 2:36:19 PM - Work done...
Event: 2/18/2020 2:36:21 PM - Work done...
Event: 2/18/2020 2:36:23 PM - Work done...
Event: 2/18/2020 2:36:25 PM - Work done...
Event: 2/18/2020 2:36:27 PM - Work done...
Event: 2/18/2020 2:36:29 PM - Work done...
Event: 2/18/2020 2:36:31 PM - Work done...
Unregister-Event cmdlet, olay aboneliğiyle ilişkili işi durdurur (İş Kimliği 18). İş Kimliği 19 hâlâ çalışıyor ve yeni etkinlikler oluşturuyor. İşi durdurmak ve gereksiz iş nesnelerini kaldırmak için İşi cmdlet'lerini kullanıyoruz.
Get-Content günlük dosyasının içeriğini görüntüler.
Parametreler
-Action
Olayları işlemek için komutları belirtir.
Eylemindeki komutlar olayı olay kuyruğuna göndermek yerine bir olay tetiklendiğinde çalışır. Komut dosyası bloğu oluşturmak için komutları küme ayraçları ({}) içine yerleştirin.
Eylem parametresinin değeri, $Event betik bloğuna olay hakkında bilgi sağlayan $EventSubscriber, $Sender, $EventArgs, $argsve otomatik değişkenleri içerebilir. Daha fazla bilgi için bkz. about_Automatic_Variables.
Bir eylem belirttiğinizde, Register-EngineEvent bu eylemi temsil eden bir olay işi nesnesi döndürür. Etkinlik işini yönetmek için Görev cmdlet'lerini kullanabilirsiniz.
Parametre özellikleri
| Tür: | ScriptBlock |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
Parametre kümeleri
(All)
| Position: | 101 |
| Zorunlu: | False |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | False |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
-Forward
Bu cmdlet'in bu abonelik için olayları yerel bilgisayardaki oturuma gönderdiğini gösterir. Uzak bir bilgisayarda veya uzak bir oturumda olaylara kaydolırken bu parametreyi kullanın.
Parametre özellikleri
| Tür: | SwitchParameter |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
Parametre kümeleri
(All)
| Position: | Named |
| Zorunlu: | False |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | False |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
-MaxTriggerCount
Eylemin olay aboneliği için en fazla kaç kez gerçekleştirilebileceğini belirtir.
Parametre özellikleri
| Tür: | Int32 |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
Parametre kümeleri
(All)
| Position: | Named |
| Zorunlu: | False |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | False |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
-MessageData
Bu parametre, tüm Event cmdlet'leri için temel sınıfın bir parçasıdır.
Register-EngineEvent bu parametreyi kullanmaz. Bu parametreye geçirilen tüm veriler göz ardı edilir.
Parametre özellikleri
| Tür: | PSObject |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
Parametre kümeleri
(All)
| Position: | Named |
| Zorunlu: | False |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | False |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
-SourceIdentifier
Abone olduğunuz olayın kaynak tanımlayıcısını belirtir. Kaynak tanımlayıcı geçerli oturumda benzersiz olmalıdır. Bu parametre gereklidir.
Bu parametrenin değeri, abone nesnesinin SourceIdentifier özelliğinin ve bu abonelikle ilişkili tüm olay nesnelerinin değerinde görünür.
Değer, olayın kaynağına özgüdür. Bu, New-Event cmdlet'iyle kullanmak için oluşturduğunuz rastgele bir değer olabilir. PowerShell motoru, PSEngineEvent değerlerini, PowerShell.Exiting ve PowerShell.OnIdledestekler.
Parametre özellikleri
| Tür: | String |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
Parametre kümeleri
(All)
| Position: | 100 |
| Zorunlu: | True |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | False |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
-SupportEvent
Cmdlet'in olay aboneliğini gizlediğini gösterir. Geçerli abonelik daha karmaşık bir olay kayıt mekanizmasının parçası olduğunda ve bağımsız olarak keşfedilmemesi gerektiğinde bu parametreyi ekleyin.
SupportEvent parametresiyle oluşturulan bir aboneliği görüntülemek veya iptal etmek için veya Get-EventSubscriber cmdlet'lerine Unregister-Event parametresini ekleyin.
Parametre özellikleri
| Tür: | SwitchParameter |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
Parametre kümeleri
(All)
| Position: | Named |
| Zorunlu: | False |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | False |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
CommonParameters
Bu cmdlet yaygın parametreleri destekler: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction ve -WarningVariable. Daha fazla bilgi için bkz. about_CommonParameters.
Girişler
None
Nesneleri bu cmdlet'e yöneltemezsiniz.
Çıkışlar
None
Varsayılan olarak, bu cmdlet çıkış döndürmez.
PSEventJob
Eylem parametresini kullandığınızda, bu cmdlet bir PSEventJob nesnesi döndürür.
Notlar
Olaylar, olay abonelikleri ve olay kuyruğu yalnızca geçerli oturumda bulunur. Mevcut oturumu kapatırsanız, etkinlik kuyruğu silinir ve etkinlik aboneliği iptal edilir.
Çıkış olayına abone olurken, Eylem parametresi ile çalıştırılabilecek cmdlet'ler, Microsoft.PowerShell.Core ve Microsoft.PowerShell.Utility modüllerindeki cmdlet'lerle sınırlıdır. Çıkış olayı, yalnızca oturum PowerShell tarafından kontrol edilerek kapatıldığında tetiklenir. Konak uygulaması veya terminal penceresi kapatıldığında olay tetiklenmez.
Motor, bir işlem hattı çalıştırmıyorsa boşta olarak kabul edilir. OnIdle olayı, PowerShell etkin olmadığında ve 300 milisaniye (ms) boyunca boşta kaldığında tetiklenir.
Uyarı
PSReadLine kullanımda olduğunda, zaman aşımına uğradığında ve 300 ms boyunca yazma olmadığında ReadKey() olayı tetiklenir. Kullanıcı bir komut satırını düzenlemenin ortasındayken, örneğin kullanıcı hangi parametrenin kullanılacağına karar vermek için yardım okuyorken olaya işaret edilebilir. PSReadLine 2.2.0-beta4 sürümünden başlayarak, OnIdle davranışı yalnızca ReadKey() zaman aşımı olduğunda ve geçerli düzenleme arabelleği boş olduğunda olaya işaret etmek için değiştirildi.