See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 10956|Vastuse: 3

PowerShell kutsub .net ja tellib sündmused [lähtekood]

[Kopeeri link]
Postitatud 17.01.2017 17:05:59 | | | |


Faili allalaadimiseks kasutan .net WebClient objekti,

Ja kasuta powershelli, et tellida DownloadProgressChanged sündmus,

Uuendasin allalaadimise edenemisriba.

Tellimusüritus kasutab powershelli Register-ObjectEventi ning sissejuhatusdokument on järgmine:

Kokkuvõte
    Tellib sündmused, mis genereeritakse Microsoft .NET Framework objekti poolt.

grammatika
    Register-ObjectEvent [-InputObject] <PSObject> [-EventName] <String> [[-SourceIdentifier] <String>] [[-Action] <ScriptBlock>] [-Forward] [-MaxTriggerCount <Int32>] [-MessageData <PSObject>] [-Toetussündmus ] [<CommonParameters>]


Sisend
    Puudub
    Sa ei saa torustitada objekte Register-ObjectEvent .

Väljund
    System.Management.Automation.PSEventJob
    See cmdlet ei genereeri ühtegi väljundit.

Eksegees
    * Üritused, ürituste tellimused ja sündmuste järjekord eksisteerivad ainult praeguses sessioonis. Kui sulged praeguse sessiooni, visatakse sündmuste järjekord ära ja tellimus tühistatakse.
   

näide
    Näide 1: Telli sündmused, kui uus protsess algab
    PS C:\>$Query = Uus-Objekt System.Management.WqlEventQuery "__InstanceCreationEvent", (Uue objekti ajavahemik 0,0,1), "TargetInstance on 'Win32_Process'"
    PS C:\>$ProcessWatcher = New-Object System.Management.ManagementEventWatcher $Query
    PS C:\>Register-ObjectEvent -InputObject $ProcessWatcher -EventName "EventArrived"
   
    See näide kajastab sündmusi, mis tekivad uue protsessi alguses.

Käsk kasutab ManagementEventWatcher objekti, et saada EventArrived sündmusi. Päringuobjekt määrab, et sündmused on Win32_Process klassi instantsi loomise sündmused.
    Näide 2: Määra tegevus, mis reageerib sündmusele
    PS C:\>$Query = Uus-Objekt System.Management.WqlEventQuery "__InstanceCreationEvent", (Uue objekti ajavahemik 0,0,1), "TargetInstance on 'Win32_Process'"
    PS C:\>$ProcessWatcher = New-Object System.Management.ManagementEventWatcher $query
    PS C:\>$Action = { New-Event "PowerShell.ProcessCreated" -Sender $Sender -EventArguments $EventArgs.NewEvent.TargetInstance }
    PS C:\>register-objectEvent -InputObject $ProcessWatcher -EventName "EventArrived" -Action $Action
    ID nimi olek HasMoreData asukohakäsk
    --    ----            -----      -----------     --------             -------
    2 422CFE5A-65E... Tõelise uue sündmuse käivitamine "PowerShe...
   
    See näide näitab, kuidas määrata tegevus, mis reageerib sündmusele. Kui määrad tegevuse, ei lisata tõstetud sündmusi sündmuste järjekorda. Selle asemel reageerib tegevus sündmusele.

Selles näites, kui instantsi loomise sündmus tõstatatakse, mis tähistab uue protsessi algust, tõstatakse uus ProcessCreated sündmus.

Tegevus kasutab $Sender ja $EventArgs automaatseid muutujaid, mis on täidetud ainult sündmuste toimingute jaoks.

Register-ObjectEvent käsk tagastab tööobjekti, mis esindab tegevust ja töötab taustatööna. Taustatöö haldamiseks saad kasutada Job käsukoode, nagu Get-Job ja Receive-Job.

Lisateabe saamiseks vaata about_Jobs.
    Näide 3: Telli objektisündmused kaugarvutites
    PS C:\>$S = Uus-PSSession -ComputerName "Server01, Server02"
    PS C:\> Invoke-Command -Session $S -FilePath ProcessCreationEvent.ps1
    PS C:\> Invoke-Command -Session $S { get-event }# ProcessCreationEvent.ps1function Enable-ProcessCreationEvent{ $Query = New-Object System.Management.WqlEventQuery "__ InstanceCreationEvent", '
       (Uue objekti ajavahemik 0,0,1), '
       "TargetInstance isa 'Win32_Process'" $ProcessWatcher = New-Object System.Management.ManagementEventWatcher $Query $Identifier = "WMI. ProcessCreated" Register-ObjectEvent -Input $ProcessWatcher -EventName "EventArrived" '
       -SourceIdentifier $Identifier -MessageData "Test" -Forward}EnableProcessCreationEvent
   
    See näide näitab, kuidas tellida objektisündmusi kaugarvutites.

Esimene käsk loob PSSessioonid kahel kaugarvutil ja salvestab need $S muutujasse.

Teine käsk kasutab Invoke-Command cmdlet'i FilePath parameetrit, et käivitada ProcessCreationEvent.ps1 skript igas PSSessionis $S.

Skript sisaldab käsku Register-ObjectEvent, mis tellib Win32_Process objekti instantside loomise sündmused ManagementEventWatcher objekti ja selle EventArrived kaudu sündmus.
    Näide 4: Kasuta dünaamilist moodulit PSEventJob objektis
    PS C:\>$Timer = Uute objektide taimerid. Taimer
    PS C:\>$Timer.Intervall = 500
    PS C:\>$Job = Register-ObjectEvent -InputObject $Timer -EventName Möödunud -SourceIdentifier Timer.Random -Action {$Random = Get-Random -Min 0 -Max 100}
    PS C:\>$Job.gettype().fullnameSystem.Management.Automation.PSEventJob
    PS C:\>$Job | Formaadiloend -Omadus *
    Riik:
    RunningModule : __DynamicModule_6b5cbe82-d634-41d1-ae5e-ad7fe8d57fe0
    StaatusSõnum :
    HasMoreData : Tõsi
    Asukoht:
    Käsk: $Random= Get-Random -Min 0 -Max 100
    JobStateInfo : Jooksmine
    Lõpetatud: System.Threading.ManualResetEvent
    InstanceId : 88944290-133d-4b44-8752-f901bd8012e2
    Id : 1
    Nimi: Timer.Random
    ChildJobs : {}... PS C:\>$Timer.Enabled = $True
    PS C:\>& $Job.module {$Random}60
    PS C:\>& $Job.module {$Random}47
   
    See näide näitab, kuidas kasutada dünaamilist moodulit PSEventJob objektis, mis luuakse, kui sündmuste registreerimisse lisada tegevus.

Esimene käsk kasutab New-Object cmdlet'i taimeri objekti loomiseks. Teine käsk seab taimeri intervalliks 500 (millisekundit).

Kolmas käsk kasutab Register-ObjectEvent cmdlet'i, et registreerida taimeri objekti Elapsed sündmus. Käsk sisaldab tegevust, mis haldab sündmust. Iga kord, kui taimeri intervall möödub, tõstetakse sündmus ja tegevuse käsud käivituvad. Sellisel juhul genereerib Get-Random cmdlet juhusliku arvu vahemikus 0 kuni 100 ja salvestab selle $Randomvariable.

Kui kasutad Register-ObjectEvent käsus Action parameetrit, tagastab käsk PSEventJob objekti, mis esindab tegevust. Käsk salvestab töö objekti $Job muutujas.

PSEventJob objekt, mille tagastab Register-ObjectEvent cmdlet, on samuti saadaval sündmuse tellija Action omaduses. Lisainfo saamiseks vaata Get-EventSubscriber.

Neljas käsk näitab, et $Job muutuja sisaldab PSEventJob objekti. Viies käsk kasutab Format-List kässut, et kuvada kõik PSEventJob objekti omadused nimekirjas.

PSEventJobil on mooduli omadus, mis sisaldab dünaamilist skriptimoodulit, mis teostab tegevuse.

Kuues käsk aktiveerib taimeri.

Ülejäänud käsud kasutavad kõneoperaatorit (&), et kutsuda käsk moodulis ja kuvada $Random muutuja väärtust. Kõneoperaatoriga saab kutsuda esile mis tahes käsku moodulis, sealhulgas ka käske, mida ei ekspordita. Sellisel juhul näitavad käsud juhuslikku arvu, mis genereeritakse Elasti sündmuse ajal.

Lisateabe saamiseks moodulite kohta vaata about_Modules.


Seotud lingid
    Veebiversioon: http://go.microsoft.com/fwlink/?LinkId=821845
    Get-Event
    Uus sündmus
    Register-EngineEvent
    Register-WmiEvent
    Eemaldamise sündmus
    Unregister-Event
    Wait-Event

Lõpuks lisa PS lähtekood:

Turistid, kui soovite näha selle postituse peidetud sisu, palunVastuse





Eelmine:PowerShelli meetodid üherealiste, mitmerealiste kommentaaride ja plokikommentaaride jaoks
Järgmine:PowerShell kasutab WebClientit failide allalaadimiseks
Postitatud 26.04.2017 14:35:44 |
132432423432423
Postitatud 16.04.2019 17:14:12 |
2222222222222
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com