Vbscript Visual basic脚本编写:如果执行所需时间超过我需要的时间,是否有方法停止执行

Vbscript Visual basic脚本编写:如果执行所需时间超过我需要的时间,是否有方法停止执行,vbscript,Vbscript,所以说实话,我正在尝试创建一个ping扫描工具,用visualbasic脚本告诉我哪些设备在线。如果ping命令的运行时间超过.25-.5秒(基本上是在没有响应的情况下),我不知道如何停止它。最终目标是创建一个脚本,扫描某个范围内的所有255个ip地址,让我知道哪些ip地址是活动的,并尽快在文档中显示它们。我当前的脚本速度很慢,如果没有尽快收到响应,我想跳过对ip地址的完整ping。我知道有无数种方法可以做到这一点,但对于我自己的娱乐事业,我想创造我自己的。奖励:我计划在某个时候实时显示这些数据

所以说实话,我正在尝试创建一个ping扫描工具,用visualbasic脚本告诉我哪些设备在线。如果ping命令的运行时间超过.25-.5秒(基本上是在没有响应的情况下),我不知道如何停止它。最终目标是创建一个脚本,扫描某个范围内的所有255个ip地址,让我知道哪些ip地址是活动的,并尽快在文档中显示它们。我当前的脚本速度很慢,如果没有尽快收到响应,我想跳过对ip地址的完整ping。我知道有无数种方法可以做到这一点,但对于我自己的娱乐事业,我想创造我自己的。奖励:我计划在某个时候实时显示这些数据,并希望得到一些帮助。不要为我做任何事。我是靠自己学习的,有人为我这样做对我没有好处。我只想被指向正确的方向。这是一个自行分配的项目

 Dim x, prompt, title, DefaultValue ' Declare 
prompt = "Please enter the first 3 octets of the Ip range you wish to scan in the format    of XXX.XXX.XXX."
 title = "Quick ping scan"
 DefaultValue = "192.168.1."
UserEntry = InputBox(prompt, title, DefaultValue)
pingscan = "ping -n 1 "
Set start = WScript.CreateObject ("WScript.Shell")
If (UserEntry = "") Then
prompt = "Please enter a valid ip address"
title = "Quick ping scan"
UserEntry = InputBox(prompt, title, DefaultValue)
Else
End If
for x = 1 to 255
Set finalvalue = (start.Exec("ping -n 1 "&UserEntry &x))
Set Output = CreateObject("Scripting.FileSystemObject").OpenTextFile(".\PS_results.txt",8,true)
strOutput = finalvalue.StdOut.ReadAll
If ((InStr(1, strOutput, "bytes=32")) = "71") Then
Output.WriteLine strOutput
Else 
End If
Output.close
Next
result = MsgBox ("Ping Scan is finished. Do you want to open the file?",vbYesNo+vbInformation, "")
If(result="6") Then
    start.Exec("notepad .\PS_results.txt")
ElseIf(result="7") Then
    WScript.Echo "Ping Scan is complete"
    End If

我将给您一个命令提示符命令来执行此操作。vbs中也有相同的对象,我将为您提供一个如何访问对象的示例

wmic /node:@"c:\SomeFileFilledWithComputernamesWithoutSlashesOrIPAddresses.txt /failfast:on computersystem get caption /format:list >serversonline.txt
Try/Format:List、Table、CSV、Hform(html列表)和HTable。如果使用h格式,则将输出设置为htm文件

/failfast:on意味着如果它不响应,它就不会等待它(毕竟所有计算机通常都能快速响应)

/你可以这样做吗

serenity
trigger
127.0.0.1
129.6.87.23
这是在vbs中访问wmi对象的方法(但命令提示更容易)

\\.\,点是计算机名。指本地计算机。执行127.0.0.1

    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\127.0.0.1\root\cimv2")

您可以再运行一个线程来检查脚本运行的时间。请参阅此问题,x=1到254的保留广播地址不是
.255
吗?我在几年前做了类似的事情,使用数据库查找预定义的子网并扫描每个子网,当它发现一个可以支持WMI的主机时,它会将另一个vbs脚本注入主机并远程执行,以向数据库填充有关主机的信息,它还会运行一些无人参与的安装。这是在集团政策出台之前的事了,长官。更好的是,我注意到它只检查了71个字符。所以只要我把ip地址改成10.44.3。它不会记录任何东西,直到ip地址达到100。解决这个问题的简单方法是什么?我突然想到,我使用netview命令来构建服务器列表。这将列出已打开的服务器。所以,也许网络视图会做你想做的。谢谢。我会试试这些,然后回来汇报。再次感谢您,非常感谢任何外部意见和帮助。
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\127.0.0.1\root\cimv2")