- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我实际上试图每 50 秒运行一次计时器 (lmd)。但是当我按 ctrl+c 时,计时器仍然继续在其操作块中打印消息。所以我写了另一个计时器(ctrlc),它每秒运行一次并查找任何按下的 ctrlc。然后注销 lmd 计时器和 ctrl 计时器。并将 TreatControlCAsInput 重置为 false。但是我在 ctrlc 计时器操作块中遇到了问题。我无法触发 RemoveTimer 功能。请建议:)
# Disables the timer and unregisters the event subscriber
function RemoveTimer ($timerin, $sourceidentifier) {
Write-Host "Inside RemoveTimer $sourceidentifier"
try {
$timerin.Enabled = $False
Unregister-Event -SourceIdentifier $sourceidentifier
} Catch {
Write-Host "Error occurred while stopping timer $($_.Exception.Message)"
}
}
# Disables the timer and unregisters the event subscriber
function RemoveTimer1 {
Write-Host "Inside RemoveTimer1"
}
# LMD Timer
try {
$lmdtimer = New-Object Timers.Timer
$lmdtimer.Interval = 50000
$registerevent = Register-ObjectEvent -InputObject $lmdtimer -EventName Elapsed -SourceIdentifier LMDTimer.Output -Action {
Write-Debug "$($Event | Out-String)"
Write-Host "Script is running"
}
$lmdtimer.Enabled = $True
Write-Debug "$($lmdtimer | Out-String)"
} Catch {
Write-Host "Error occurred while starting LMDTimer $($_.Exception.Message)"
RemoveTimer $lmdtimer "LMDTimer.Output"
}
# CTRLC Timer
try {
[console]::TreatControlCAsInput = $true
$ctrlctimer = New-Object Timers.Timer
$ctrlctimer.Interval = 1000
$params = new-object psobject -property @{RemoveTimer1 = $function:RemoveTimer1}
$registerevent = Register-ObjectEvent -InputObject $ctrlctimer -EventName Elapsed -SourceIdentifier CTRLCTimer.Output -MessageData $function:RemoveTimer1 -Action {
if ($Host.UI.RawUI.KeyAvailable -and (3 -eq [int]$Host.UI.RawUI.ReadKey("AllowCtrlC,IncludeKeyUp,NoEcho").Character))
{
Write-Host "Removing LMDTimer and CTRLCTimer"
try {
#RemoveTimer $lmdtimer "LMDTimer.Output"
#RemoveTimer $ctrlctimer "CTRLCTimer.Output"
$Event.MessageData.RemoveTimer1
} Catch {
Write-Host $_.Exception.Message
}
Write-Host "Removing TreatControlCAsInput"
[console]::TreatControlCAsInput = $false
exit
}
}
$ctrlctimer.Enabled = $True
Write-Debug "$($ctrlctimer | Out-String)"
} Catch {
Write-Host "Error occurred while starting CTRLCTimer $($_.Exception.Message)"
RemoveTimer $ctrlctimer "CTRLCTimer.Output"
[console]::TreatControlCAsInput = $false
}
for ($i=0;$i -lt 4000;$i++) {
Write-Host "$i"
}
RemoveTimer $lmdtimer "LMDTimer.Output"
RemoveTimer $ctrlctimer "CTRLCTimer.Output"
[console]::TreatControlCAsInput = $false
最佳答案
您可以使用 -MessageData
将信息传递给脚本块的参数:
$pso = new-object psobject -property @{foo = $foo; bar = $bar}
Register-ObjectEvent... -messagedata $pso
$Event.MessageData.foo
关于powershell - 将变量传递给 register-objectevent 操作 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30366745/
我正在创建一个运行空间池,它将有多个运行空间在不同时间开始停止。 为了跟踪这一点,我所有的运行空间都放在一个集合中。 我正在尝试为每个对象注册一个对象事件,以便我可以将信息从运行空间返回给 gui 中
我想在文件更改时以表格格式显示 csv 文件的最后 20 行。要手动执行此操作,我使用了 import-csv $FILENAME | select -last 20 | Format-Table -
我有一个脚本使用 PowerShell 的 Register-ObjectEvent 来监视文件夹的更改。由于 Register-ObjectEvent 仅在 PowerShell session 处
我实际上试图每 50 秒运行一次计时器 (lmd)。但是当我按 ctrl+c 时,计时器仍然继续在其操作块中打印消息。所以我写了另一个计时器(ctrlc),它每秒运行一次并查找任何按下的 ctrlc。
powershell register-objectevent 操作块是否按顺序执行? 例如: Register-ObjectEvent -InputObject $someObject -Event
在 powershell ISE 中工作正常,但在控制台中我得到: The term 'MainAction' is not recognized as the name of a cmdlet, f
在我的 PowerShell 脚本中,我尝试在 ODataServices 客户端请求中插入请求 header 。我正在使用 Register-ObjectEvent 来做到这一点。这种技术在 .NE
我的目标是在收到作业时调用类方法,或者只是通知外部方法作业已完成。 有什么办法吗?这是示例脚本: class Test { $_Trigger $_Event $_Job $_Resu
是否可以访问 Register-ObjectEvent cmdlet 的 -Action 脚本块中的事件参数?如果是,如何? 最佳答案 是的。 EventArgs对象在 Action 脚本块中作为一个
我已经在这个头上挠了好几个小时...下面的代码触发了单击或关闭通知气球的操作。我也是PowerShell的新手。 考虑以下代码: ####### Launch as : ###############
我是一名优秀的程序员,十分优秀!