【问题标题】:Gather IP address information收集 IP 地址信息
【发布时间】:2013-11-01 00:09:22
【问题描述】:

我正在努力寻找有关 PowerShell 版本之间差异的信息,但这一切都非常混乱。

Windows 7 上安装的 PowerShell 3 中的网络命令有哪些可用的命令?据我所知,许多模块需要单独导入,但我找不到任何get-netipaddress cmdlet 或其他类似的,在 Win8 或 Win Server 2012 中可用,但在 win7 上没有。有没有可以在Win7中导入的模块呢? PS v2中可能有类似的命令?

更新:我正在运行 v3。根据我的阅读,该命令在 PowerShell 3 上可用,但未安装在 Win7 上。但为什么会这样呢?

【问题讨论】:

  • 请退后一步,描述您要解决的实际问题,而不是您认为的解决方案。您需要这些 cmdlet 做什么?
  • 好吧,就目前而言,主要是为了我的学习。我正在关注一些在 Windows Server 2012 上实际使用 v.3(据说)的示例。我现在无法访问它,所以我将它安装在 Win 7 笔记本电脑上。

标签: powershell windows-7 ip-address


【解决方案1】:

我不知道 Get-NetIPAddress cmdlet 以什么结构返回其数据,但如果您正在寻找一种方法来检索 IP 设置,您可以使用 WMI 和 Win32_NetworkAdapterConfiguration class:

Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter 'IPEnabled = True'

System.Net.NetworkInformation namespace 有许多类可用于检索相同类型的信息:

[System.Net.NetworkInformation.NetworkInterface]::GetAllNetworkInterfaces() `
    | ForEach-Object { $_.GetIPProperties() } `
    | Select-Object -ExpandProperty 'UnicastAddresses';

【讨论】:

    【解决方案2】:

    PowerShell 版本仅附带一组“核心”cmdlet,并且只有在您安装新版本的 PowerShell 时才会更改这组 cmdlet。

    像 Get-NetIPAddress 这样的 Cmdlet 实际上并不是 PowerShell 的一部分 - 它们是底层操作系统的一部分,在本例中是 Windows 8.1 和 Windows Server 2012 R2。它们依赖于特定操作系统版本中的功能,因此它们与操作系统捆绑在一起,而不是与管理框架捆绑在一起。

    因此,很遗憾,您的问题的答案是,除了升级到 Windows 8.1 之外,您无法让 Get-NetIPAddress 在 Windows 7 上运行。

    【讨论】:

      【解决方案3】:

      我对 Pre-Win8、Server2012 PS 中缺少这个特定的 cmdlet 感到非常沮丧。将 TCPIP 设置放入 PS 进行操作的一种方法是将变量设置为 ipconfig 命令的输出,例如: $ipconf = ipconfig

      这将为您提供与 get-netipaddress 提供的大部分信息相同的信息。

      下一个命令将过滤掉除 IP 地址之外的所有地址-

      $ipconf = $ipconf -match "IPv"

      但这会返回格式如下的内容:

      IPv4....................... : 192.168.0.1

      如果您只想获取 IP 地址:

      $ipconf = $ipconf.split(":")[1]

      【讨论】:

      • ((ipconfig) -match "IPv").split(":")[1].trim()
      • 这个答案应该是被接受的。无论如何 - 一个小评论 - 更好地指定要匹配的 ip 版本 - 以防两者都在(IPv4/IPv6)
      【解决方案4】:

      Get-NetIPAddress 不是 powershell 的一部分,而是 windows 服务器本身的一部分。我建议在 VM 中运行 windows 服务器并从那里开始学习。

      您可以从this link 下载 180 天评估版 ISO 或 VHD 并使用试用版进行学习。

      【讨论】:

      • 感谢您的回答,这可能就是我要做的,使用虚拟磁盘。但是我仍然想知道......在早期版本的 PS 中是否有任何类似或(接近)的命令来获取/设置 Windows 中的 IP 地址?
      【解决方案5】:

      首先遇到Get-NetIPAddress,但也需要它在Win7上工作。 Win32_NetworkAdapterConfiguration 似乎给的绰绰有余。

      (Get-WmiObject -Class Win32_NetworkAdapterConfiguration | Where-Object {($_.IPEnabled -eq $true) -and ($_.DHCPEnabled -eq $true)} | Select IPAddress).IPAddress
      

      这是我用例的一个例子。 IPEnabled 似乎过滤掉了虚拟/“假”适配器,而 DHCPEnabled 似乎过滤掉了非静态分配的地址(因为这些主要是客户端机器并且不关心边缘情况)。基本上,尽可能获得“最真实的 IP”。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-04-18
        • 1970-01-01
        • 1970-01-01
        • 2013-12-22
        • 2018-05-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多