如何在powershell中测试按键或继续



我有一个基本的powershell函数,可以作为spambot。

function Start-Spambot{
[CmdletBinding()]
param(
[Parameter(Mandatory=$True,HelpMessage="The text you wish to spam.")]
[string]$text,
[Parameter(Mandatory=$True,HelpMessage="How many milliseconds between messages.")]
[decimal]$speed,
[Parameter(Mandatory=$True,HelpMessage="The tota ammout you want to spam.")]
[decimal]$number
)
$count = $number
Invoke-BalloonTip -Message "You have 3 seconds before the program starts spamming." -Title "Start-Spambot $text $speed $number"
Start-Sleep -Seconds 3
while ($count -gt 0){
[System.Windows.Forms.SendKeys]::SendWait("$text")
[System.Windows.Forms.SendKeys]::SendWait("{ENTER}")
Start-Sleep -Milliseconds $speed
$count -= 1
}
[System.Windows.Forms.SendKeys]::SendWait("$text")
Invoke-BalloonTip -Message "$text has been typed $number times." -Title "Start-Spambot $text $speed $number"
}

我想添加的是while循环中的终止开关。例如,如果按"esc",脚本应该中断while循环并正常继续。(invoke-balloontip将在右下角弹出)。我看了一堆,在谷歌上搜索了几个小时,但他们都只是想去,如果按下键,而不是反过来。

你们有一个简单的脚本或函数吗?

注意:你们所有抱怨我没有我尝试过的代码的人。为什么我要保存那些不起作用的东西?)编辑:如果可能的话,应该在终端外工作。

经过更多的搜索,我终于找到了这个方法:

Add-Type -AssemblyName WindowsBase
Add-Type -AssemblyName PresentationCore
1..10000000 | ForEach-Object {
"I am at $_"
$isDown = [Windows.Input.Keyboard]::IsKeyDown([System.Windows.Input.Key]::LeftShift)
if ($isDown){
Write-Warning "ABORTED!!"
break
}
start-sleep -Milliseconds 10
} 

编辑:它不能在ise中工作,这有点烦人

最新更新