相对较新的Powershell。
我试图从下面的代码输出描述和IPAddress值,而不输出它的IPV6地址。
我想要这个描述和IPAddress值,我已经通过选择-Expand IPAddress和一个Like命令成功地将它输出到IPV4,但是当我试图通过Select添加描述时,它只是破坏了整个过程。
下面是我已经接近,显示我的描述+ IP地址,但我想隐藏IPV6保持整洁。
gwmi Win32_NetworkAdapterConfiguration -computername $endpointip |
Where { $_.IPAddress -notlike '*::*' } | Where {$_.Description -like '*GbE*' -or $_.Description -like '*Ethernet*' -or $_.Description -like '*Wi-Fi*'-or $_.Description -like '*Wireless*' -or $_.Description -like '*Cisco*'}| # filter the objects where an address actually exists
Select Description, IPAddress| Out-String # retrieve only the property *value*也试过了
$_.IPAddress -like '*.*.*'不过,这只是像下面这样的输出,我不想要IPV6地址
`Description IPAddress
----------- ---------
Intel(R) Wireless-AC 9560 160MHz {192.168.0.16, fe80::50d0:fda6:44ee:237d}
Realtek PCIe GbE Family Controller
Microsoft Wi-Fi Direct Virtual Adapter
Microsoft Wi-Fi Direct Virtual Adapter
Cisco AnyConnect Secure Mobility Client Virtual Miniport Adapter for Windows x64 {x.x.x.x, xxxx::xxxx:xxxxx:xxxx, xxxx::xxxx:xxxx:xxxx:xxxx}
Realtek USB GbE Family Controller `或者像这样
Description IPAddress
----------- ---------
Intel(R) Wireless-AC 9560 160MHz {192.168.0.16, fe80::50d0:fda6:44ee:237d}
Cisco AnyConnect Secure Mobility Client Virtual Miniport Adapter for Windows x64 {xx.xx.xx.xx, xxxx::xxxx:xxxxx:xxxx, xxxx::xxxx:xxxx:xxxx:xxxx}任何帮助都将不胜感激,谢谢
发布于 2022-11-20 17:35:05
在PowerShell“如何思考”方面,您想要过滤的是按预期的那样工作。*.*.*将获得在IPAddress匹配*.*.*中具有值的对象,但它不排除其他值。立即解决的方法是使用计算性质提取IP地址:
gwmi Win32_NetworkAdapterConfiguration -computername $endpointip |
Where {$_.Description -like '*GbE*' -or $_.Description -like '*Ethernet*' -or $_.Description -like '*Wi-Fi*'-or $_.Description -like '*Wireless*' -or $_.Description -like '*Cisco*'} |
Select Description, @{
Name = 'IPAddress'
Expression = { $_.IPAddress | Select -First 1}
}在这里,您告诉它只选择IPAddress中的第一个对象值,它几乎总是IPv4地址。
$_.IPAddress | ? { $_ -like '*.*' }匹配。在不知道PS版本的情况下,Get-CimInstance取代了Get-WMIObject,因为PS内核中也不支持PS 3.0+。
https://stackoverflow.com/questions/74510185
复制相似问题