Register-EngineEvent
PowerShell altyapısı ve cmdlet'i tarafından oluşturulan olaylara New-Event
abonedir.
Syntax
Register-EngineEvent
[-SourceIdentifier] <String>
[[-Action] <ScriptBlock>]
[-MessageData <PSObject>]
[-SupportEvent]
[-Forward]
[-MaxTriggerCount <Int32>]
[<CommonParameters>]
Description
Cmdlet, Register-EngineEvent
PowerShell altyapısı ve cmdlet'i tarafından oluşturulan olaylara New-Event
abonedir. Olayı belirtmek için SourceIdentifier parametresini kullanın.
Bu cmdlet'i, cmdlet tarafından New-Event
oluşturulan OnIdle veya Çıkış altyapısı olaylarına ve olaylarına 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 cmdlet'ini Get-EventSubscriber
kullanın. Aboneliği iptal etmek için, olay abonesini Unregister-Event
oturumdan silen cmdlet'ini kullanın.
Abone olunan olay tetiklendiğinde, oturumunuzda olay kuyruğuna eklenir. Olay kuyruğundaki olayları almak için cmdlet'ini Get-Event
kullanın.
Örnekler
Örnek 1: Uzak bilgisayarlara PowerShell altyapısı olayı kaydetme
Bu örnek, iki uzak bilgisayarda bir PowerShell altyapısı olayına kaydolr.
$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 uzak oturumlarda komutunu çalıştırır Register-EngineEvent
.
Register-EngineEvent
olayı tanımlamak için SourceIdentifier parametresini kullanır. forward parametresi, altyapıya olayları uzak oturumdan yerel oturuma iletmesini söyler.
Örnek 2: Çıkış olayı gerçekleştiğinde belirtilen eylemi gerçekleştirme
Bu örnekte, PowerShell.Exiting olayı gerçekleştiğinde belirli bir eyleme geçmek için nasıl çalıştırılacak Register-EngineEvent
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, MyEventSource kaynağından olaylar için bir abonelik oluşturur. Bu, bir işin ilerleme durumunu izlemek için kullanacağımız rastgele bir kaynaktır. Register-EngineEvent
aboneliği oluşturmak için kullanılır. Action 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..."
New-Event -SourceIdentifier MyEventSource -Message ("{0} - Work done..." -f (Get-Date))
}
}
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
18. İş Kimliği oluşturuldu. Start-Job
19. İş Kimliği oluşturuldu. Örnek 4'te olay aboneliğini ve işleri kaldırıp günlük 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...
Cmdlet, Unregister-Event
olay aboneliğiyle ilişkili işi durdurur (İş Kimliği 18). İş Kimliği 19 hala çalışıyor ve yeni olaylar oluşturuyor. İş cmdlet'leri işi durdurur ve gereksiz iş nesnelerini kaldırır. Get-Content
günlük dosyasının içeriğini görüntüler.
Parametreler
-Action
Olayları işlemek için komutları belirtir. Eylem'deki komutlar, olayı olay kuyruğuna göndermek yerine bir olay tetiklendiğinde çalıştırılır. Betik bloğu oluşturmak için komutları küme ayraçları ({}
) içine alın.
Action parametresinin değeri, Eylem betik bloğuna $Event
olay hakkında bilgi sağlayan , $Sender
$EventSubscriber
, , $EventArgs
ve $Args
otomatik değişkenlerini 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. Olay işini yönetmek için İş cmdlet'lerini kullanabilirsiniz.
Type: | ScriptBlock |
Position: | 101 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Forward
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.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-MaxTriggerCount
Eylemin olay aboneliği için en fazla kaç kez yürütüldüğünü belirtir.
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-MessageData
Olayla ilişkili ek verileri belirtir. Bu parametrenin değeri, olay nesnesinin MessageData özelliğinde görüntülenir.
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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 zorunludur.
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, cmdlet'iyle New-Event
kullanmak için oluşturduğunuz rastgele bir değer olabilir. PowerShell altyapısı, PowerShell.Exiting ve PowerShell.OnIdle PSEngineEvent değerlerini destekler.
Type: | String |
Position: | 100 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | 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 Unregister-Event
cmdlet'lerine Force parametresini Get-EventSubscriber
ekleyin.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Girişler
None
Nesneleri bu cmdlet'e yöneltemezsiniz.
Çıkışlar
None
Varsayılan olarak, bu cmdlet çıkış döndürmez.
Action 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. Geçerli oturumu kapatırsanız olay kuyruğu atılır ve olay aboneliği iptal edilir.
Exiting olayına abone olurken, Action parametresi tarafından yürütülebilen cmdlet'ler Microsoft.PowerShell.Core ve Microsoft.PowerShell.Utility modüllerindeki cmdlet'lerle sınırlıdır. Çıkış olayı yalnızca oturumdan PowerShell denetimi altında çıkıldığında tetiklenir. Konak uygulaması veya terminal penceresi kapatıldığında olay tetiklenmez.
Altyapı, işlem hattı çalıştırmıyorsa boşta olarak kabul edilir. PowerShell 300 milisaniye (ms) boyunca boşta kaldığında OnIdle olayı tetiklenir.
Not
PSReadLine kullanımda olduğunda, zaman aşımına uğradıklarında ReadKey()
OnIdle olayı tetiklenir (300ms'de yazma olmaz). 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 zaman aşımı olduğunda ReadKey()
ve geçerli düzenleme arabelleği boşsa olayı işaret etmek için değiştirildi.
İlişkili Bağlantılar
PowerShell
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin