用于多个 IP 地址的 VBscript [英] VBscript for use with multiple IP addresses

查看:24
本文介绍了用于多个 IP 地址的 VBscript的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试用 vbscript 编写脚本,但作为一个近乎菜鸟和在线教程不起作用,我不得不在这里发帖寻求帮助.

I'm trying to write a script in vbscript but being a near noob and online tutorials didn't work, I had to resort to posting here asking for help.

我从不同来源混合和匹配的脚本显示域、用户、计算机名称、IP 地址.脚本正在运行.但是在某些环境下,一个用户可能有多个IP地址,在MsgBox中显示时,只返回最后一个IP地址结果,在很多情况下,这是错误的.

The script that I've mixed and match from different sources displays domain, user, computer name, ip address. The script is working. However in certain environment, a user could potentially have multiple IP addresses and when displaying in MsgBox, only the last IP address result is returned and in many cases, that's wrong.

我想知道如何添加/可以将地址存储在数组中,并在结果不止一个时让 MsgBox 显示其他 IP 地址.

I would like to know how I add/can store the address in an array and have MsgBox display the other IP addresses if there was more than one result.

谢谢.

脚本附在下面:

Option Explicit
DIM WshNetwork, strComputer, IPConfigSet, objWMIService, IPConfig, i, j, strIP, title, message, colItems, objItem
DIM arrIPAddress, columnC, strIPAddress, testIP(3)

Set WshNetwork = WScript.CreateObject("WScript.Network")

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set IPConfigSet = objWMIService.ExecQuery _
    ("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE")

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") 
Set colItems = objWMIService.ExecQuery( _
    "SELECT * FROM Win32_NetworkAdapterConfiguration",,48) 
For Each objItem in colItems 
    If isNull(objItem.IPAddress) Then
    Else
        Wscript.Echo "IPAddress: " & Join(objItem.IPAddress, ",")
        strIP = objItem.IPAddress(0)
    End If
Next

title = "Who Am I?"

message =   "Domain: " & vbTab & vbTab & WshNetwork.UserDomain & VbCrlf & _
            "User Name: " & vbTab & UCase(WshNetwork.UserName) & VbCrlf & _
            "Computer Name: " & vbTab & WshNetwork.ComputerName & VbCrlf & _
            "IP Address1: " & vbTab & strIP 

Msgbox message, , title

<小时>

推荐答案

在您的代码中 MsgBox 将显示上次枚举的网络适配器的第一个地址.如果要显示所有 IP 地址,请更改此:

In your code MsgBox will show the first address of the network adapter last enumerated. If you want to show all IP addresses, change this:

Set colItems = objWMIService.ExecQuery( _
    "SELECT * FROM Win32_NetworkAdapterConfiguration",,48)
For Each objItem in colItems 
    If isNull(objItem.IPAddress) Then
    Else
        Wscript.Echo "IPAddress: " & Join(objItem.IPAddress, ",")
        strIP = objItem.IPAddress(0)
    End If
Next

title = "Who Am I?"

message =   "Domain: " & vbTab & vbTab & WshNetwork.UserDomain & VbCrlf & _
            "User Name: " & vbTab & UCase(WshNetwork.UserName) & VbCrlf & _
            "Computer Name: " & vbTab & WshNetwork.ComputerName & VbCrlf & _
            "IP Address1: " & vbTab & strIP

进入这个:

Set colItems = objWMIService.ExecQuery( _
    "SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
ReDim arrIP(-1)
For Each objItem In colItems
    For Each addr In objItem.IPAddress
        ReDim Preserve arrIP(UBound(arrIP)+1)
        arrIP(UBound(arrIP)) = addr
    Next
Next

title = "Who Am I?"

message = "Domain:" & vbTab & vbTab & WshNetwork.UserDomain & vbNewLine & _
          "User Name:" & vbTab & UCase(WshNetwork.UserName) & vbNewLine & _
          "Computer Name:" & vbTab & WshNetwork.ComputerName & vbNewLine & _
          "IP Address1:" & vbTab & Join(arrIP, ", ")

这篇关于用于多个 IP 地址的 VBscript的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆