Considere este código:Nuevo cierre en ScriptBlock
PS> $timer = New-Object Timers.Timer
PS> $timer.Interval = 1000
PS> $i = 1;
PS> Register-ObjectEvent $timer Elapsed -Action { write-host 'i: ' $i }.GetNewClosure()
PS> $timer.Enabled = 1
i: 1
i: 1
i: 1
...
# wait a couple of seconds and change $i
PS> $i = 2
i: 2
i: 2
i: 2
que supone que cuando se crea nuevo cierre ({ write-host 'i: ' $i }.GetNewClosure()
) valor de $i
estará ligada a este cierre. Pero no en este caso. Después de cambiar el valor, write-host
toma el nuevo valor.
Por otro lado, esto funciona:
PS> $i = 1;
PS> $action = { write-host 'i: ' $i }.GetNewClosure()
PS> &$action
i: 1
PS> $i = 2
PS> &$action
i: 1
Por qué no funciona con el Register-ObjectEvent
?
sería de gran ayuda si ha especificado qué resultado que se esperaba y qué resultado que tienes. – Richard
resultados agregados, así que espero que esté claro .. – stej
Parece un error para mí o al menos deberíamos tener una forma de configurar esto. Ya lo encontré presentado: https://connect.microsoft.com/PowerShell/feedback/details/541754/getnewclosure-doesnt-work-on-register-objectevent# –