3

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

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

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

在此处输入图像描述

4

5 回答 5

14

我不知道Get-NetIPAddresscmdlet 以什么结构返回其数据,但如果您正在寻找一种检索 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';
于 2013-10-22T23:31:44.967 回答
9

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

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

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

于 2013-10-22T22:56:07.433 回答
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]

于 2015-02-13T19:35:19.343 回答
1

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

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

于 2013-10-22T22:56:38.510 回答
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”。

于 2018-02-16T19:28:58.627 回答