我有一個文本檔案,其中包含如下內容。我想在一個陣列中的“HEALTH_AT_A_GLANCE”中獲取資料,在另一個陣列中的“FIRMWARE_INFORMATION”中獲取資料,不包括 INDEX* 我的問題是如何實作它。我嘗試了很多但對我不起作用,請提出建議
HEALTH_AT_A_GLANCE
BIOS_HARDWARE STATUS= OK
FANS STATUS= OK
FANS REDUNDANCY= Redundant
TEMPERATURE STATUS= OK
POWER_SUPPLIES STATUS= OK
POWER_SUPPLIES REDUNDANCY= Redundant
BATTERY STATUS= OK
PROCESSOR STATUS= OK
MEMORY STATUS= OK
NETWORK STATUS= OK
STORAGE STATUS= OK
HEALTH_AT_A_GLANCE
FIRMWARE_INFORMATION
INDEX_1
FIRMWARE_NAME VALUE = ILO
FIRMWARE_VERSION VALUE = 2.44 Apr 30 2021
INDEX_1
INDEX_2
FIRMWARE_NAME VALUE = System ROM
FIRMWARE_VERSION VALUE = U30 v2.50 (05242021)
INDEX_2
INDEX_3
FIRMWARE_NAME VALUE = Redundant System ROM
FIRMWARE_VERSION VALUE = U30 v2.50 (05242021)
INDEX_3
INDEX_4
FIRMWARE_NAME VALUE = Intelligent Platform Abstraction Data
FIRMWARE_VERSION VALUE = 15.2.0 Build 51
INDEX_4
INDEX_5
FIRMWARE_NAME VALUE = Power Management Controller Firmware
FIRMWARE_VERSION VALUE = 1.0.7
FIRMWARE_FAMILY VALUE = 19h
INDEX_5
INDEX_6
FIRMWARE_NAME VALUE = Power Management Controller FW Bootloader
FIRMWARE_VERSION VALUE = 1.1
INDEX_6
INDEX_7
FIRMWARE_NAME VALUE = System Programmable Logic Device
FIRMWARE_VERSION VALUE = 0x31
INDEX_7
INDEX_8
FIRMWARE_NAME VALUE = Server Platform Services (SPS) Firmware
FIRMWARE_VERSION VALUE = 4.1.4.505
INDEX_8
INDEX_9
FIRMWARE_NAME VALUE = HPE Smart Storage Energy Pack 1 Firmware
FIRMWARE_VERSION VALUE = 0.70
INDEX_9
INDEX_10
FIRMWARE_NAME VALUE = Intelligent Provisioning
FIRMWARE_VERSION VALUE = 3.64.2
INDEX_10
INDEX_11
FIRMWARE_NAME VALUE = Innovation Engine (IE) Firmware
FIRMWARE_VERSION VALUE = 0.2.2.2
INDEX_11
INDEX_12
FIRMWARE_NAME VALUE = Embedded Video Controller
FIRMWARE_VERSION VALUE = 2.5
INDEX_12
INDEX_13
FIRMWARE_NAME VALUE = HPE Smart Array P816i-a SR Gen10
FIRMWARE_VERSION VALUE = 3.53
INDEX_13
INDEX_14
FIRMWARE_NAME VALUE = HP Ethernet 1Gb 4-port 366FLR Adapter
FIRMWARE_VERSION VALUE = 1.2836.0
INDEX_14
INDEX_15
FIRMWARE_NAME VALUE = HPE Smart Array P816i-a SR Gen10
FIRMWARE_VERSION VALUE =
INDEX_15
FIRMWARE_INFORMATION
要求如下:
array1 將保存以下資料
ILO ->2.44 Apr 30 2021
System ROM -> U30 v2.50 (05242021)
Redundant System ROM ->U30 v2.50 (05242021)
Intelligent Platform Abstraction Data ->15.2.0 Build 51
Power Management Controller Firmware ->1.0.7
Power Management Controller FW Bootloader -> 1.1
System Programmable Logic Device -> 0x31
Server Platform Services (SPS) Firmware -> 4.1.4.505
HPE Smart Storage Energy Pack 1 Firmware -> 0.70
Intelligent Provisioning -> 3.64.2
Innovation Engine (IE) Firmware -> 0.2.2.2
Embedded Video Controller -> 2.5
HPE Smart Array P816i-a SR Gen10 -> 3.53
HP Ethernet 1Gb 4-port 366FLR Adapter ->1.2836.0
Array2 將保存以下資料:
BIOS_HARDWARE STATUS= OK
FANS STATUS= OK
FANS REDUNDANCY= Redundant
TEMPERATURE STATUS= OK
POWER_SUPPLIES STATUS= OK
POWER_SUPPLIES REDUNDANCY= Redundant
BATTERY STATUS= OK
PROCESSOR STATUS= OK
MEMORY STATUS= OK
NETWORK STATUS= OK
STORAGE STATUS= OK
我寫了下面的代碼,它只選擇 INDEX 直到 8 之后才選擇。如何獲取所有INDEX資料?
$patternarr = @()
$array = @()
$result = ""
$string = Get-Content $importpath
foreach ($line in $string)
{
if ($line -like "*INDEX_*")
{
$patternarr = $line.Substring($line.length -1, 1)
}
}
$patternmax = $patternarr | measure -Maximum
$patternmax
$patternnr = $patternmax.Maximum
For ($i=0; $i -lt $patternnr; $i )
{
$pattern ="INDEX_$i(.*?)INDEX_$i"
$result = [regex]::match($string, $pattern).Groups[1].value
$array = $result.replace(" FIRMWARE_NAME VALUE = ","").replace(" FIRMWARE_VERSION VALUE = ","-> ").replace(" FIRMWARE_FAMILY VALUE = 19h","")
}
$array```
uj5u.com熱心網友回復:
您可以嘗試將此作為基本腳本。
$x = @"
HEALTH_AT_A_GLANCE
BIOS_HARDWARE STATUS= OK
FANS STATUS= OK
FANS REDUNDANCY= Redundant
TEMPERATURE STATUS= OK
POWER_SUPPLIES STATUS= OK
POWER_SUPPLIES REDUNDANCY= Redundant
BATTERY STATUS= OK
PROCESSOR STATUS= OK
MEMORY STATUS= OK
NETWORK STATUS= OK
STORAGE STATUS= OK
HEALTH_AT_A_GLANCE
FIRMWARE_INFORMATION
INDEX_1
FIRMWARE_NAME VALUE = ILO
FIRMWARE_VERSION VALUE = 2.44 Apr 30 2021
INDEX_1
INDEX_2
FIRMWARE_NAME VALUE = System ROM
FIRMWARE_VERSION VALUE = U30 v2.50 (05242021)
INDEX_2
INDEX_3
FIRMWARE_NAME VALUE = Redundant System ROM
FIRMWARE_VERSION VALUE = U30 v2.50 (05242021)
INDEX_3
INDEX_4
FIRMWARE_NAME VALUE = Intelligent Platform Abstraction Data
FIRMWARE_VERSION VALUE = 15.2.0 Build 51
INDEX_4
INDEX_5
FIRMWARE_NAME VALUE = Power Management Controller Firmware
FIRMWARE_VERSION VALUE = 1.0.7
FIRMWARE_FAMILY VALUE = 19h
INDEX_5
INDEX_6
FIRMWARE_NAME VALUE = Power Management Controller FW Bootloader
FIRMWARE_VERSION VALUE = 1.1
INDEX_6
INDEX_7
FIRMWARE_NAME VALUE = System Programmable Logic Device
FIRMWARE_VERSION VALUE = 0x31
INDEX_7
INDEX_8
FIRMWARE_NAME VALUE = Server Platform Services (SPS) Firmware
FIRMWARE_VERSION VALUE = 4.1.4.505
INDEX_8
INDEX_9
FIRMWARE_NAME VALUE = HPE Smart Storage Energy Pack 1 Firmware
FIRMWARE_VERSION VALUE = 0.70
INDEX_9
INDEX_10
FIRMWARE_NAME VALUE = Intelligent Provisioning
FIRMWARE_VERSION VALUE = 3.64.2
INDEX_10
INDEX_11
FIRMWARE_NAME VALUE = Innovation Engine (IE) Firmware
FIRMWARE_VERSION VALUE = 0.2.2.2
INDEX_11
INDEX_12
FIRMWARE_NAME VALUE = Embedded Video Controller
FIRMWARE_VERSION VALUE = 2.5
INDEX_12
INDEX_13
FIRMWARE_NAME VALUE = HPE Smart Array P816i-a SR Gen10
FIRMWARE_VERSION VALUE = 3.53
INDEX_13
INDEX_14
FIRMWARE_NAME VALUE = HP Ethernet 1Gb 4-port 366FLR Adapter
FIRMWARE_VERSION VALUE = 1.2836.0
INDEX_14
INDEX_15
FIRMWARE_NAME VALUE = HPE Smart Array P816i-a SR Gen10
FIRMWARE_VERSION VALUE =
INDEX_15
FIRMWARE_INFORMATION
"@
$l = $x.Split("`n")
$l1 = [System.Collections.Generic.List[String]]::new()
$l2 = [System.Collections.Generic.List[String]]::new()
$startH = $false
$startF = $false
$nextasvalue = $false
$header = ""
foreach($line in $l) {
if ($line -match "HEALTH_AT_A_GLANCE") {
if ($startH) {
$startH = $false
} else {
$startH = $true
}
continue
}
if ($line -match "FIRMWARE_INFORMATION") {
if ($startF) {
$startF = $false
} else {
$startF = $true
}
continue
}
if ($line -match "^INDEX") {
continue
}
if ($startH) {
$l1.Add($line)
}
if ($startF) {
if ($nextasvalue) {
$value = $line.Split("=")[1].Trim()
$l2.Add("$header ->$value")
$nextasvalue = $false
}
else {
$header = $line.Split("=")[1].Trim()
$nextasvalue = $true
}
}
}
$l1
$l2
uj5u.com熱心網友回復:
問題已通過使用代碼行解決 $pattern ="INDEX_$i(.*?)INDEX_$i"
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/358621.html
標籤:电源外壳
