Quantcast
Channel: Windows PowerShell Forum
Viewing all articles
Browse latest Browse all 2314

Register-ObjectEvent action with $sender understanding

$
0
0

Hallo zuammen,
ich experimentiere mit EventHandlern und habe mir das hier zusammengeschrieben:

cls
Get-EventSubscriber|Unregister-Event
Get-Job|Remove-Job

function JobEventhandler {
    param (
        $f_ThisJob
        )
    write-host "Triggered"
    write-host $f_ThisJob
}

for ($i = 1;$i -lt 2;$i++) {
$i
$JOB = start-job `
	-name $i `
	-scriptBlock {start-sleep -seconds 3; 1...5 }

$null = register-ObjectEvent -inputobject $JOB -EventName StateChanged -SourceIdentifier "JobEnd$i" -action {JobEventhandler($sender) }
}

Ziel ist es, eine dynamische Anzahl von Jobs zu erzeugen, und für jeden einen Eventhandler zu generieren.
Wenn der Job seinen Status ändert, wird das Event getriggert und der Job verarbeitet.

Das o.g. Script funktioniert soweit, daß mit jeder Statusänderung eines Jobs die korrelierende Action gestartet wird.

Was aber nicht funktioniert, ist die Übergabe des "$sender".

Hier wird egal was ich mache, nur ein "System.Management.Automation.PSRemotingJob" zurück gegeben.
Hier eine Beispielausgabe mit 2 Jobs:

1
2

PS C:\WINDOWS\system32> Triggered
System.Management.Automation.PSRemotingJob
Triggered
System.Management.Automation.PSRemotingJob

Ich stütze mich hier auf diesen Artikel:

"...
The action uses the $Sender and $EventArgs automatic variables which are populated only for event actions.
..."
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/register-objectevent?view=powershell-5.1

Was übersehe ich?


Viewing all articles
Browse latest Browse all 2314


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>