Powershell

powershell 的一些正則表達式

  • April 2, 2013

我有以下範例文件。

Symmetrix 邏輯設備計數 = 13
CLARiiON 邏輯設備計數=0
Invista 邏輯設備計數=0
通用邏輯設備計數=0
==============================================================================
----- 主機匯流排適配器 --------- ------ I/O 路徑 ----- ------ 統計資訊 ------
### HW 路徑摘要 Total Dead IO/Sec Q-IOs Errors
==============================================================================
2 埠 2\path0 已降級 13 3 - 0 3
3 埠 3\path0 已降級 13 3 - 0 3



10:00:00:00:c9:69:5b:70 的埠屬性

節點 WWN:20 00 00 00 c9 69 5b 70
埠 WWN:10 00 00 00 c9 69 5b 70
埠符號名:Emulex PPN-10:00:00:00:C9:69:5B:70
FCID 埠:78004A
埠類型:織物
港口國:運營
港口服務類型:8
支持的埠 FC4:00 00 01 00 00 00 00 01
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
埠活動 FC4:00 00 01 00 00 00 00 01
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
埠支持的速度:1 2 4 GBit/sec。
埠速度:1 GBit/sec。
最大幀尺寸:2048
作業系統設備名稱:\\.\Scsi2:
發現埠數:2
面料名稱:20 02 00 0d ec f1 00 c1


10:00:00:00:c9:69:37:63 的埠屬性

節點 WWN:20 00 00 00 c9 69 37 63
埠 WWN:10 00 00 00 c9 69 37 63
埠符號名:Emulex PPN-10:00:00:00:C9:69:37:63
FCID 埠:780098
埠類型:織物
港口國:運營
港口服務類型:8
支持的埠 FC4:00 00 01 00 00 00 00 01
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
埠活動 FC4:00 00 01 00 00 00 00 01
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
埠支持的速度:1 2 4 GBit/sec。
埠速度:1 GBit/sec。
最大幀尺寸:2048
作業系統設備名稱:\\.\Scsi3:
發現埠數:2
面料名稱:20 02 00 0d ec f0 b5 81

我只需要在 powershell 中選擇以下部分。我怎樣才能做到這一點?將對像做成這樣會很棒,但拆分就足夠了

==============================================================================
----- 主機匯流排適配器 --------- ------ I/O 路徑 ----- ------ 統計資訊 ------
### HW 路徑摘要 Total Dead IO/Sec Q-IOs Errors
==============================================================================
2 埠 2\path0 已降級 13 3 - 0 3
3 埠 3\path0 已降級 13 3 - 0 3

非常感謝

PS。

我嘗試使用下面的程式碼行,但它不僅返回所需的塊:

[regex]::match($file,'(={3,}).+(?=Port\sAttributes\sfor.+)',"singleline").value

聚苯乙烯。

我真的很抱歉,我對正則表達式不夠熟悉,這就是我問的原因

假設您在文件中提供了日誌內容hba.log,以下內容將返回以“=”、“-”、“#”中的任何一個開頭的所有行,或者包含 1 個或多個空白字元的行,後跟一個數字,然後由一個空格字元,後跟“埠”:

Get-Content hba.log | Where-Object { $_ -match "^[=#-]|\s{1,}\d\sport" }

在這裡測試返回:

==============================================================================
----- Host Bus Adapters ---------  ------ I/O Paths -----  ------ Stats ------
### HW Path                        Summary   Total   Dead  IO/Sec Q-IOs Errors
==============================================================================
  2 port2\path0                   degraded     13      3       -     0      3
  3 port3\path0                   degraded     13      3       -     0      3

如果2 port2\path0行以製表符或特定數量的空格開頭,我們可以重寫上面的程式碼來使用它。如果您需要更具體的內容,您需要在問題中澄清第 9-10[- n ?]行的可能值可能包含哪些內容。

引用自:https://serverfault.com/questions/495345