确定远程 PC 是否在线的最快方法
Quickest way to determine if a remote PC is online
我倾向于 运行 很多针对远程 PC 的命令,但我总是先检查以确保它们在线。我目前使用此代码:
If objFSO.FolderExists("\" & strHost & "\c$") Then
'The PC is online so do your thing
但是,当远程 PC 不在线时,我的笔记本电脑需要约 45 秒才会超时并解析为 FALSE
。
有没有办法加快超时?或者是否有另一种易于实施的解决方案来确定 PC 是否在线?
您可以使用 WMI
来 ping 它。
Function IsOnline(strHost As String) As Boolean
Dim strQuery As String
strQuery = "select * from Win32_PingStatus where Address = '" & strHost & "'"
Dim colItems As Object
Set colItems = GetObject("winmgmts://./root/cimv2").ExecQuery(strQuery)
Dim objItem As Object
For Each objItem In colItems
If IsObject(objItem) Then
If objItem.StatusCode = 0 Then
IsOnline = True
Exit Function
End If
End If
Next
End Function
您可以使用来自 ping 请求的 return 代码:
Function HostIsOnline(hostname)
Set oShell = WScript.CreateObject("WScript.Shell")
Set oShellExec = oShell.Exec("ping -n 1 " & hostname)
While oShellExec.Status = 0
WScript.Sleep(100)
Wend
HostIsOnline = (oShellExec.ExitCode = 0)
End Function
我倾向于 运行 很多针对远程 PC 的命令,但我总是先检查以确保它们在线。我目前使用此代码:
If objFSO.FolderExists("\" & strHost & "\c$") Then
'The PC is online so do your thing
但是,当远程 PC 不在线时,我的笔记本电脑需要约 45 秒才会超时并解析为 FALSE
。
有没有办法加快超时?或者是否有另一种易于实施的解决方案来确定 PC 是否在线?
您可以使用 WMI
来 ping 它。
Function IsOnline(strHost As String) As Boolean
Dim strQuery As String
strQuery = "select * from Win32_PingStatus where Address = '" & strHost & "'"
Dim colItems As Object
Set colItems = GetObject("winmgmts://./root/cimv2").ExecQuery(strQuery)
Dim objItem As Object
For Each objItem In colItems
If IsObject(objItem) Then
If objItem.StatusCode = 0 Then
IsOnline = True
Exit Function
End If
End If
Next
End Function
您可以使用来自 ping 请求的 return 代码:
Function HostIsOnline(hostname)
Set oShell = WScript.CreateObject("WScript.Shell")
Set oShellExec = oShell.Exec("ping -n 1 " & hostname)
While oShellExec.Status = 0
WScript.Sleep(100)
Wend
HostIsOnline = (oShellExec.ExitCode = 0)
End Function