AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 48567
In Process
Geo
Geo
Asked: 2009-08-01 07:14:53 +0800 CST2009-08-01 07:14:53 +0800 CST 2009-08-01 07:14:53 +0800 CST

如何在 Windows Server 上获取本地连接的 IP 地址?

  • 772

我想创建一个批处理或 vbs 文件,它将一个 url 放在一起并执行。该 url 的一部分需要是机器的实际 IP 地址。我如何能够在变量中获取该 IP 地址以将其包含在脚本中?

编辑1:

我发现下面的命令会给我 IP 地址,但仍然不知道如何将该值放入变量中以在脚本中使用它。

c:\> wmic NICCONFIG WHERE IPEnabled=true GET IPAddress /format:csv

Node,IPAddress
IP-0AFB,{10.25.5.2}
windows scripting windows-server-2003 wmi ip
  • 6 6 个回答
  • 40207 Views

6 个回答

  • Voted
  1. Dscoduc
    2009-08-01T07:30:50+08:002009-08-01T07:30:50+08:00

    这是我在以前的脚本中使用的一些示例代码...

    Dim myIPAddress : myIPAddress = ""
    Dim objWMIService : Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
    Dim colAdapters : Set colAdapters = objWMIService.ExecQuery("Select IPAddress from Win32_NetworkAdapterConfiguration Where IPEnabled = True")
    Dim objAdapter
    For Each objAdapter in colAdapters
      If Not IsNull(objAdapter.IPAddress) Then myIPAddress = trim(objAdapter.IPAddress(0))
      exit for
    Next
    
    Wscript.echo "My IPAddress is " & myIPAddress
    
    • 5
  2. Marcus
    2009-08-01T07:50:52+08:002009-08-01T07:50:52+08:00

    如果要将 IP 地址返回到变量中,可以执行以下操作:

    Const wbemFlagReturnImmediately = &h10
    Const wbemFlagForwardOnly = &h20
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
    Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled='TRUE'", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)
    For Each objItem In colItems
                strIPAddress = Join(objItem.IPAddress, ",")
                *yourFunctionName*(strIPAddress)
    Next
    

    此代码直接取自 Microsoft 的 TechNet Scriptcenter 的 Scriptomatic v2.0。在这里找到:http ://technet.microsoft.com/en-us/scriptcenter/dd939957.aspx

    • 2
  3. quux
    2009-08-19T02:52:58+08:002009-08-19T02:52:58+08:00

    这是一种将 WMIC 结果提取到 cmd 脚本中的变量的方法:

    @echo off
    setlocal
    set varcounter=0
    set wmicmd="wmic NICCONFIG WHERE IPEnabled=true GET IPAddress"
    for /f "tokens=1 delims={, skip=1" %%a in ('%wmicmd%') do call :SETVAR %%a
    endlocal
    goto :eof
    
    :SETVAR
    set /a varcounter=%varcounter% + 1
    if not {%1}=={} (
        echo NIC %varcounter% address is {%1}
        set NIC%varcounter%=%1
    )
    goto :eof
    

    请注意,由于可能有多个 NIC,我们必须遍历 WMIC 的输出,这是通过为 WMIC 输出的每一行调用 :SETVAR 来完成的(不过,跳过第一行,并测试任何空白的尾随行。创建一个变量对于找到的每个启用的 NIC - 变量将是 %NIC1%、%NIC2% 等。

    以"echo NIC"开头的第 12 行,在您满意后可以删除。

    • 1
  4. Jeff
    2012-06-02T05:55:26+08:002012-06-02T05:55:26+08:00

    你知道,为了让这非常有用,我添加了/node:%1(以获取远程计算机的 IP)与 ping 或 nslookup 相比,为系统管理员和网络管理员节省了一些跑腿工作。我确定我要添加的另一件事是“错误检查”,这样,如果系统碰巧不可用,脚本可以“记录该信息”——比如System %1 not available——然后继续获取下一个的 ip系统。

    通常,我会制作一个“bat”来“调用 bat”所以,我只需创建一个批处理文件,可能类似于下面的“getall.bat”:

    然后像这样运行它:getall > getall-log.txt 2>&1

    (上面会将所有信息输出到一个文本文件,包括遇到的任何错误)

    getall.bat

    rem getall.bat
    call getnic.bat workstation1
    call getnic.bat workstation2
    call getnic.bat server1
    call getnic.bat server2
    rem end of getall.bat
    

    getnic.bat

    rem - getnic.bat
    @echo off
    setlocal
    set varcounter=0
    set wmicmd="wmic /node:%1 NICCONFIG WHERE IPEnabled=true GET IPAddress"
    for /f "tokens=1 delims={, skip=1" %%a in ('%wmicmd%') do call :SETVAR %%a
    endlocal
    goto :eof
    
    :SETVAR
    set /a varcounter=%varcounter% + 1
    if not {%1}=={} (
        echo NIC %varcounter% address is {%1}
        set NIC%varcounter%=%1
    )
    goto :eof
    rem end of getnic.bat
    
    • 1
  5. Dan Skinner
    2012-08-29T18:10:29+08:002012-08-29T18:10:29+08:00

    转换为 IPv6

    @echo off
    setlocal
    set varcounter=0
    set wmicmd="wmic NICCONFIG WHERE IPEnabled=true GET IPAddress"
    for /f "tokens=2 delims={, skip=1" %%a in ('%wmicmd%') do call :SETVAR %%a
    endlocal
    goto :eof
    
    :SETVAR
    set /a varcounter=%varcounter% + 1
    if not {%1}=={} (
        echo NIC %varcounter% IPv6 address is {%1}
        set NIC%varcounter%=%1
    )
    goto :eof
    
    • 1
  6. Brent Pabst
    2012-06-02T06:27:12+08:002012-06-02T06:27:12+08:00

    我知道您要求提供 VBS 或 Batch 样式的脚本,但我想如果您想尝试该路线或其他任何查看此问题的人,我也会添加一个 PowerShell 片段...

    [System.Net.Dns]::GetHostAddresses([System.Net.Dns]::GetHostName()) | foreach {write $_.IPAddressToString}
    

    这将返回当前分配给机器的所有 IP 地址。

    • 0

相关问题

  • Vanilla Powershell 是否足以成为 Windows 和 DB 服务器管理员的语言?

  • 为什么添加新驱动器后我的磁盘驱动器访问速度如此之慢?

  • 在 Windows Server 2003 下使用 wscipt 从 .asp 文件运行 .exe

  • 最佳混合环境(OS X + Windows)备份?[关闭]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve