我很难找到有关PowerShell版本之间差异的信息,但这一切都很混乱。
Windows 7上安装的PowerShell 3中有哪些命令可用于网络命令?据我所知,许多模块需要单独导入,但我找不到任何可用于Win8或Win Server 2012的get-netipaddress
cmdlet或其他类似的模块,但在win7上没有。是否有可以在Win7中导入的模块?也许PS v2中有类似的命令?
更新:我正在运行v3。根据我的阅读,该命令在PowerShell 3上可用,但未安装在Win7上。但为什么会这样呢?
答案 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"可能的。