我有一个带有主机名列表的excel工作簿。我目前正在使用下面的代码获取每个主机名的IP,并根据服务器的状态将单元格颜色更改为红色和绿色。此代码可以在99%的时间内工作,但有时几次服务器将显示为不可用。但是当我在cmd中手动使用ping时,它显示服务器已启动。手动Ping它也表明往返不是特别长,所以我不认为超时是罪魁祸首。
有没有人知道为什么会这样?
<table id="customers">
<tbody><tr class="alt"><th> </th>
<th>1</th>
<th>2</th>
<th>3</th>
<th>4</th>
<th>5</th>
</tr>
<tr class="alt"><td>1</td>
<td contenteditable='true'>asdasd</td>
<td contenteditable='true'>153213 </td>
<td contenteditable='true'>253625213</td>
<td contenteditable='true'>026426</td>
<td contenteditable='true' >asdasd</td>
</tr>
答案 0 :(得分:0)
有两个问题导致我无法ping某些服务器。
第一个小问题是其中一个主机名后面有一个额外的空格。这将阻止Win32_PingStatus ping正确的服务器。确保在主机名之前和之后删除所有空格。
第二个错误是超时时间。默认情况下,超时为1000毫秒。然而,对于更繁忙的服务器,它有时可能需要更长的时间。我将此添加到我的代码中以将超时延长到4000毫秒,从而解决了定期无法ping的所有服务器。
Set oPing = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery _
("select * from Win32_PingStatus where address = '" & sHost & "' and timeout = 4000")