Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在powershell中测试按键或继续_Powershell - Fatal编程技术网

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

如何在powershell中测试按键或继续,powershell,Powershell,我有一个基本的powershell函数,可以作为spambot使用 功能启动Spambot{ [CmdletBinding()] param( [参数(必需=$True,HelpMessage=“您希望发送垃圾邮件的文本。”)] [字符串]$text, [参数(必需=$True,HelpMessage=“消息之间的间隔时间。”)] [十进制]$速度, [参数(必需=$True,HelpMessage=“您要发送垃圾邮件的总量。”)] [十进制]$number ) $count=$number 调

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

功能启动Spambot{
[CmdletBinding()]
param(
[参数(必需=$True,HelpMessage=“您希望发送垃圾邮件的文本。”)]
[字符串]$text,
[参数(必需=$True,HelpMessage=“消息之间的间隔时间。”)]
[十进制]$速度,
[参数(必需=$True,HelpMessage=“您要发送垃圾邮件的总量。”)]
[十进制]$number
)
$count=$number
调用BallootTip-消息“在程序开始发送垃圾邮件前还有3秒钟。”-标题“开始发送垃圾邮件$text$speed$number”
开始睡眠-3秒
而($count-gt 0){
[System.Windows.Forms.SendKeys]::SendWait($text)
[System.Windows.Forms.SendKeys]::SendWait(“{ENTER}”)
开始睡眠-毫秒$speed
$count-=1
}
[System.Windows.Forms.SendKeys]::SendWait($text)
调用气球提示-消息“$text已键入$number次。”-标题“Start Spambot$text$speed$number”
}
我想在while循环中添加一个kill开关。例如,如果按“esc”,脚本将中断while循环并正常继续。(调用BallootTip将在右侧底部弹出)。我在谷歌上搜索了好几个小时,但他们都只是想在按下键的情况下离开,而不是反过来

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

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

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

添加类型-AssemblyName WindowsBase
添加类型-AssemblyName PresentationCore
1..10000000 |每个对象{
“我在$\”
$isDown=[Windows.Input.Keyboard]::IsKeyDown([System.Windows.Input.Key]::LeftShift)
如果($isDown){
写入警告“中止!!”
打破
}
开始睡眠-10毫秒
} 
编辑:
这在伊塞行不通,因为它做得很好;详细说明:无论哪个窗口有焦点,您的解决方案都会在系统范围内检测按键。相比之下,
[Console]:KeyAvailable
仅检测运行PowerShell代码的控制台窗口中的按键。