Имам проблем със следния код
foreach ($ex in ("foo", "bar", "baz")) {
$timer = New-Object Timers.timer
$taction = {
Write-Host "Timer fired for: $ex"
}
$timer.Interval = 1000
$timer.AutoReset = $false
$timer.Start()
Register-ObjectEvent -InputObject $timer -EventName elapsed -SourceIdentifier "$ex" -Action $taction
}
Този код дава следния изход
Timer fired for: baz
Timer fired for: baz
Timer fired for: baz
Но бих искал да го имам foo, bar и baz. Проблемът изглежда е, че променливата $ex се чете накрая от всички таймери, така че каквато и стойност да има, всички я получават. Как да копирам стойността на $ex в $taction, така че да е уникален?