收集IP地址信息。

3
我很难找到有关PowerShell版本之间差异的信息,但它们都相当混乱。
在安装在Windows 7上的PowerShell 3中有哪些可用于网络命令的命令?据我所知,许多模块需要单独导入,但我找不到get-netipaddress命令或其他类似命令的模块,这些命令在Win8或Win Server 2012上可用,但在win7上不可用。在Win7中是否可以导入模块以使用命令?也许在PS v2中有类似的命令?
更新:我正在运行v3。从我所读的内容来看,该命令可在PowerShell 3上使用,但未安装在Win7上。但为什么会这样呢? enter image description here

请退一步,描述您试图解决的实际问题,而不是您认为的解决方案。您需要那些 cmdlets 做什么? - Ansgar Wiechers
目前主要是为了我的学习。我正在跟随一些实际在Windows Server 2012上使用v.3(据说)的示例。我现在没有访问权限,所以我在Win 7笔记本电脑上安装了它。 - user2844129
5个回答

14

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

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

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

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

9
PowerShell发布版本仅包含一组基本的cmdlet,每当你安装新版本的PowerShell时,这一组cmdlet可能会被修改。像Get-NetIPAddress这样的cmdlet实际上并不属于PowerShell - 它们属于底层操作系统,例如Windows 8.1和Windows Server 2012 R2。它们依赖于特定操作系统版本中的功能,因此它们捆绑在操作系统中,而不是管理框架中。所以,很遗憾,对于您的问题,除非升级到Windows 8.1,否则无法在Windows 7上使用Get-NetIPAddress。

4

我一直对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
((ipconfig) -match "IPv").split(":")[1].trim() - Andrew
无论如何 - 有一个小建议 - 最好指定匹配的IP版本 - 对于两者都在(IPv4 / IPv6)的情况。 - drizzt13

1

Get-NetIPAddress 不是PowerShell的一部分,而是Windows Server本身的一部分。我建议在虚拟机中运行Windows Server并从那里进行学习。

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


谢谢你的回答,这可能是我要做的,使用虚拟磁盘。然而,我仍然想知道...在早期版本的PS中是否有类似或(接近)的命令来获取/设置Windows中的IP地址? - user2844129

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”。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接