gpt4 book ai didi

regex - 捕获多行、多组到 Powershell 变量

转载 作者:行者123 更新时间:2023-12-01 23:31:04 25 4
gpt4 key购买 nike

理想情况下,我想从 ipconfig 创建一个对象,它允许我们像这样深入到每个适配器的属性:$ip.$lan.$mac 用于 lan 适配器的 mac 地址。

首先,我想开发一种方法来将每个适配器匹配到 Powershell 变量(首选对象)中的这 3 个组(适配器类型、适配器名称、适配器属性)捕获:https://regex101.com/r/wZ3sV1/1

下面是捕获以太网适配器部分的三个部分的一些想法,但它们只捕获“以太网适配器本地连接:”:

$ip = ipconfig /all

$ip_lan = $ip | Select-String -pattern "(Ethernet [^a]*adapter) (Local[^:]+):\s*(([^\n]+\n)*)" -AllMatches | Foreach {$_.Matches} | ForEach-Object {$_.Value}

$regex_lan = [regex]"(Ethernet [^a]*adapter) (Local[^:]+):\n*(( +[^\n]+\n)*)"
$regex_lan.Matches($ip)
$regex_lan.Matches($ip).value

另外,有没有办法像这样捕获组提取的名称?:

   Description . . . . . . . . . . . : Realtek PCIe GBE Family Controller

成为描述 = Realtek PCIe GBE 系列 Controller

最佳答案

我知道这并不能直接回答您的问题。但不是使用 Regex 解析 ipconfig 的输出。您可以改为使用 Get-NetIPConfiguration 来获取更易于处理的 powershell 对象。

PS> $ip = Get-NetIPConfiguration
PS> $ip

InterfaceAlias : Ethernet
InterfaceIndex : 12
InterfaceDescription : Intel(R) Ethernet Connection I217-LM
NetProfile.Name : xyz.com
IPv4Address : 10.20.102.162
IPv6DefaultGateway :
IPv4DefaultGateway : 10.20.102.1
DNSServer : 10.20.100.9
10.20.100.11
10.20.100.13

PS> $ip.IPv4Address

IPAddress : 10.20.102.162
InterfaceIndex : 12
InterfaceAlias : Ethernet
AddressFamily : IPv4
Type : Unicast
PrefixLength : 23
PrefixOrigin : Dhcp
SuffixOrigin : Dhcp
AddressState : Preferred
ValidLifetime : 05:16:53
PreferredLifetime : 05:16:53
SkipAsSource : False
PolicyStore : ActiveStore
PSComputerName :

因此,您可以执行以下操作来获取您希望获取的值。

$ip.InterfaceAlias
$ip.InterfaceDescription
$ip.IPv4Address.IPAddress

要获取 MAC 地址,您可以使用 Get-NetAdapter cmdlet。

$adapter = Get-NetAdapter
$adapter.MacAddress

您可以使用 InterfaceIndex 关联这两条信息。然后返回一个使每个都可访问的哈希表。以下代码创建了这些组合对象的数组。

$combined = Get-NetIPConfiguration | ForEach-Object {
$adapter = Get-NetAdapter -InterfaceIndex $_.InterfaceIndex
@{ IP = $_; Adapter = $adapter }
}

关于regex - 捕获多行、多组到 Powershell 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35663684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com