我需要得到一个字符串,它在一个特定的字符串下面。
$string = 'Wireless LAN adapter Local Area Connection* 13'
ipconfig | ForEach-Object{if($_ -match $string){Select-String -AllMatches 'IPv4 Address' | Out-File C:\Temp\Avi\found.txt}}例如,我需要获得无线局域网适配器局域网连接* 13下的IPv4地址。
无线局域网适配器Wi:连接专用DNS后缀.*链接-本地IPv6地址。。。。。:fe80::34f2:d41c:3889:452e%21 IPv4地址。。。。。。。。。。。172.20.10.2子网面具。。。。。。。。。。。255.255.255.240默认网关。。。。。。。。。:172.20.10.1无线局域网适配器局域网连接* 13:特定于连接的DNS后缀.*链接-本地IPv6地址。。。。。:fe80::b 946:1464:9876:9e03%29 IPv4地址。。。。。。。。。。。192.168.137.1子网面具。。。。。。。。。。。255.255.255.0默认网关。。。。。。。。。:
发布于 2019-04-02 19:56:03
就像Lee提到的那样,您真的不想为此使用ipconfig,使用Powershell本机命令要容易得多。例如:要获取“以太网8”和“以太网10”接口的IPv4地址,可以使用以下内容:
$NetworkInterfaces = @(
"Ethernet 10"
"Ethernet 8"
)
foreach ($Interface in $NetworkInterfaces) {
Get-NetIPAddress -InterfaceAlias $Interface -AddressFamily IPv4 |
Select-Object InterfaceAlias,IPAddress
}在我的例子中,它返回如下:
InterfaceAlias IPAddress
-------------- ---------
Ethernet 10 169.254.157.233
Ethernet 8 169.254.10.64发布于 2019-04-03 05:51:11
如果绑定并确定将此解析为文本,则可以使用regex进行解析。
$a = ipconfig | Select-String 'IPv4.*\s(?<ip>(?:[0-9]{1,3}\.){3}[0-9]{1,3})'
$a.matches[0].groups["ip"].value
10.11.12.13这使用String的regex匹配作为命名组查找匹配,将它们保存为matchinfo对象,然后输出到屏幕。Regex的详细信息可以找到这里。
发布于 2019-04-03 09:00:18
有一种方法可以将字符串组合成一个字符串,然后使用正则表达式将其拆分。
$s = "Wireless LAN adapter Local Area Connection* 13"
$k = "IPv4 Address"
$part = (ipconfig) -join "`n" -split "(?<=\n)(?=\S)" | Where-Object { $_.StartsWith($s) }
$part.Split("`n") |
Where-Object { $_.TrimStart().StartsWith($k) } |
ForEach-Object { $_.Split(":", 2)[1].Trim() }https://stackoverflow.com/questions/55482208
复制相似问题