【问题标题】:PowerShell: Format Get-WmiObject output to return only the IP addressPowerShell:格式化 Get-WmiObject 输出以仅返回 IP 地址
【发布时间】:2011-03-14 22:35:20
【问题描述】:

我想使用 Get-WmiObject Win32_NetworkAdapterConfiguration 来返回网卡的 ip 地址。不幸的是,我无法弄清楚如何格式化输出以仅显示 IPv.4 地址。

Get-WmiObject Win32_NetworkAdapterConfiguration | Select IPAddress | Where-Object {$_.IPaddress -like "192.168*"}

显示:

IPAddress
---------
{192.168.56.1, fe80::8980:15f4:e2f4:aeca}

以上面的输出为例,我希望它只返回 192.168.56.1(有些客户端有多个 NIC,因此是“Where-Object”)

【问题讨论】:

    标签: powershell wmi


    【解决方案1】:

    IPAddress 属性是一个string[],所以下面应该这样做:

    gwmi Win32_NetworkAdapterConfiguration |
        Where { $_.IPAddress } | # filter the objects where an address actually exists
        Select -Expand IPAddress | # retrieve only the property *value*
        Where { $_ -like '192.168.*' }
    

    【讨论】:

    • 以上仅适用于以“192.168.*”开头的 IPv4 地址。如果你用“{$_ -notlike ':'}”替换最后一个 Where 子句,它只会给你 IPv4 地址。
    • 我需要使用?{$_ -notlike "*:*"}
    【解决方案2】:

    添加更快的答案(避免 Where-Object 并在列表上使用 -like 操作):

    @(@(Get-WmiObject Win32_NetworkAdapterConfiguration | Select-Object -ExpandProperty IPAddress) -like "*.*")[0]
    

    希望对你有帮助

    【讨论】:

      【解决方案3】:

      我想我会在上面分享我自己的变化,以防它对某人有所帮助。只有一行:

      Get-WmiObject win32_networkadapterconfiguration | where { $_.ipaddress -like "1*" } | select -ExpandProperty ipaddress | select -First 1
      

      干杯。

      【讨论】:

        【解决方案4】:

        (Get-WmiObject win32_Networkadapterconfiguration | Where-Object{$_.ipaddress -notlike $null}).IPaddress | Select-Object -First 1

        希望这会有所帮助!

        【讨论】:

        • 能否请您详细说明您的答案,添加更多关于您提供的解决方案的描述?
        【解决方案5】:
        (Get-WmiObject Win32_NetworkAdapterConfiguration | where { (($_.IPEnabled -ne $null) -and ($_.DefaultIPGateway -ne $null)) } | select IPAddress -First 1).IPAddress[0]
        

        返回与默认网关的网络连接的 IP 地址。 这正是您在大多数情况下所需要的:)

        与 Powershell 2.0 (Windows XP) 及更高版本兼容。

        【讨论】:

          【解决方案6】:
          (Get-WMIObject -Class Win32_NetworkAdapterConfiguration).IPAddress
          

          【讨论】:

          • 为什么你更喜欢这个公式而不是已经被社区验证的现有答案?
          • 我只是将这个公式设置为非常简单,无需任何其他参数即可返回 IP 地址。
          猜你喜欢
          • 1970-01-01
          • 2014-08-22
          • 1970-01-01
          • 1970-01-01
          • 2019-06-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-06-16
          相关资源
          最近更新 更多