收集IP地址信息

时间:2013-10-22 22:21:16

标签: powershell windows-7 ip-address

我很难找到有关PowerShell版本之间差异的信息,但这一切都很混乱。

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

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

enter image description here

5 个答案:

答案 0 :(得分:10)

我不知道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';

答案 1 :(得分:5)

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

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

所以,遗憾的是,你的问题的答案是,除了升级到Windows 8.1之外,没有什么可以让Get-NetIPAddress在Windows 7上运行。

答案 2 :(得分:2)

我对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]

答案 3 :(得分:1)

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

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

答案 4 :(得分:0)

首先跨越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"可能的。