在安装在Windows 7上的PowerShell 3中有哪些可用于网络命令的命令?据我所知,许多模块需要单独导入,但我找不到
get-netipaddress
命令或其他类似命令的模块,这些命令在Win8或Win Server 2012上可用,但在win7上不可用。在Win7中是否可以导入模块以使用命令?也许在PS v2中有类似的命令?更新:我正在运行v3。从我所读的内容来看,该命令可在PowerShell 3上使用,但未安装在Win7上。但为什么会这样呢?
![enter image description here](https://istack.dev59.com/vG5On.webp)
get-netipaddress
命令或其他类似命令的模块,这些命令在Win8或Win Server 2012上可用,但在win7上不可用。在Win7中是否可以导入模块以使用命令?也许在PS v2中有类似的命令?我不知道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';
我一直对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()
- AndrewGet-NetIPAddress
不是PowerShell的一部分,而是Windows Server本身的一部分。我建议在虚拟机中运行Windows Server并从那里进行学习。
您可以从this link下载180天的评估ISO或VHD,并使用试用版进行学习。
最初遇到了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”。