Select 使用拆分找到匹配后的下一行
Select next line after match is found using split
感谢阅读。
我在一个小的 powershell 脚本中工作。我的想法是解析这些信息
Hostname:
xxxxx-CS0,xxxx
Network:
IPv4 Address = xxxxx
IPv4 Netmask = 255.255.254.0
IPv4 Gateway = xxxxx
DNS Servers = xxxxx
Hostname:
xxxxx,8.1.9-184
Network:
IPv4 Address = xxxxx
IPv4 Netmask = xxxxx
IPv4 Gateway = xxxxxx
DNS Servers = xxxxxx
Hostname:
xxxxxx,7.1.80-7
Network:
IPv4 Address = xxxx
IPv4 Netmask = xxxxx
IPv4 Gateway = xxxxx
DNS Servers = xxxxx
所以..我已经得到了所有信息,除非主机名带有此代码
$info = Get-Content C:\xxxxxx\IP_info_all.txt
write-host "Network Information VNX"
ForEach ($network in $info) {
$hostname = ($network -split "`n")
if($hostname -match "Hostname")
{
Write-Host $hostname
$hostname =""
}
$b = ($network -split " ")[1]
if ($b -match "Address") {
$b
$c = ($network -split "=")[1]
$c
if ($name -match "IPv4"){
$name
$copyname =($network -split ":")[0]
}
}
$b = ($network -split " ")[1]
if ($b -match "Netmask") {
$b
$maskid = ($network -split "=")[1]
$maskid }
$d = ($network -split " ")[1]
if ($d -match "Gateway") {
$d
$Gatewayid = ($network -split "=")[1]
$Gatewayid
}
$z = ($network -split " ")[1]
$v = "DNS"
if ($z -match "Servers")
{
$v
$dnsserverid = ($network -split "=")[1,2,3]
$dnsserverid
}
并且输出给出了网络信息的名称和编号,但我不知道如何获取 "Hostname" 字符串下的下一行。
我需要这样的输出:
Network Information VNX
Hostname:
Address
xxxx
Netmask
xxxx
Gateway
xxxx
DNS
xxxx
Hostname:
Address
xxxx
Netmask
xxxx
谢谢!
遍历每一行。在设置条件语句时添加 1 以表示我想像这样阅读下一行...
$info = Get-Content "C:\xxxxxx\IP_info_all.txt"
write-host "Network Information VNX"
$content = ($info -split "`n")
For($i=0;$i -lt $content.count;$i++){
if($content[$i] -match "Hostname:")
{
"Hostname"
Write-Host $content[$i+1]
}
elseif($content[$i] -match "Network:")
{
"Network"
Write-Host ($content[$i] -split "=")[1]
}
elseif($content[$i] -match "IPv4 Address")
{
"Address"
Write-Host ($content[$i] -split "=")[1]
}
elseif($content[$i] -match "IPv4 Netmask")
{
"Netmask"
Write-Host ($content[$i] -split "=")[1]
}
elseif($content[$i] -match "IPv4 Gateway")
{
"Gateway"
Write-Host ($content[$i] -split "=")[1]
}
elseif($content[$i] -match "DNS Servers")
{
"DNS Servers"
Write-Host ($content[$i] -split "=")[1]
}
}
感谢阅读。
我在一个小的 powershell 脚本中工作。我的想法是解析这些信息
Hostname:
xxxxx-CS0,xxxx
Network:
IPv4 Address = xxxxx
IPv4 Netmask = 255.255.254.0
IPv4 Gateway = xxxxx
DNS Servers = xxxxx
Hostname:
xxxxx,8.1.9-184
Network:
IPv4 Address = xxxxx
IPv4 Netmask = xxxxx
IPv4 Gateway = xxxxxx
DNS Servers = xxxxxx
Hostname:
xxxxxx,7.1.80-7
Network:
IPv4 Address = xxxx
IPv4 Netmask = xxxxx
IPv4 Gateway = xxxxx
DNS Servers = xxxxx
所以..我已经得到了所有信息,除非主机名带有此代码
$info = Get-Content C:\xxxxxx\IP_info_all.txt
write-host "Network Information VNX"
ForEach ($network in $info) {
$hostname = ($network -split "`n")
if($hostname -match "Hostname")
{
Write-Host $hostname
$hostname =""
}
$b = ($network -split " ")[1]
if ($b -match "Address") {
$b
$c = ($network -split "=")[1]
$c
if ($name -match "IPv4"){
$name
$copyname =($network -split ":")[0]
}
}
$b = ($network -split " ")[1]
if ($b -match "Netmask") {
$b
$maskid = ($network -split "=")[1]
$maskid }
$d = ($network -split " ")[1]
if ($d -match "Gateway") {
$d
$Gatewayid = ($network -split "=")[1]
$Gatewayid
}
$z = ($network -split " ")[1]
$v = "DNS"
if ($z -match "Servers")
{
$v
$dnsserverid = ($network -split "=")[1,2,3]
$dnsserverid
}
并且输出给出了网络信息的名称和编号,但我不知道如何获取 "Hostname" 字符串下的下一行。
我需要这样的输出:
Network Information VNX
Hostname:
Address
xxxx
Netmask
xxxx
Gateway
xxxx
DNS
xxxx
Hostname:
Address
xxxx
Netmask
xxxx
谢谢!
遍历每一行。在设置条件语句时添加 1 以表示我想像这样阅读下一行...
$info = Get-Content "C:\xxxxxx\IP_info_all.txt"
write-host "Network Information VNX"
$content = ($info -split "`n")
For($i=0;$i -lt $content.count;$i++){
if($content[$i] -match "Hostname:")
{
"Hostname"
Write-Host $content[$i+1]
}
elseif($content[$i] -match "Network:")
{
"Network"
Write-Host ($content[$i] -split "=")[1]
}
elseif($content[$i] -match "IPv4 Address")
{
"Address"
Write-Host ($content[$i] -split "=")[1]
}
elseif($content[$i] -match "IPv4 Netmask")
{
"Netmask"
Write-Host ($content[$i] -split "=")[1]
}
elseif($content[$i] -match "IPv4 Gateway")
{
"Gateway"
Write-Host ($content[$i] -split "=")[1]
}
elseif($content[$i] -match "DNS Servers")
{
"DNS Servers"
Write-Host ($content[$i] -split "=")[1]
}
}