Aracılığıyla paylaş


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 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. 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.