2016-09-26 67 views
2

我已經與輸出類似下面的變量:搜索從一個變量並打印3行的字符串它上面

Volume 1 
logical disk tag = 0x207e799987 
Name = test 
disk state = OFF

我可能有100卷,但該變量僅返回狀態的磁盤「OFF」。

$chk = "some command" 
$off = "some command" 
$offChk = $Chk | Select-String -Pattern $off -Context 1 

我試圖將每個「失敗/關閉」磁盤的「邏輯磁盤標記」推送到另一個數組中。

對此有任何提示嗎?

回答

3

您已經在使用-Context參數,但您必須將值更改爲3,0,這意味着您捕獲匹配點上方的3行和下方的零點。然後你必須訪問的上下文:

(Select-String -Path 'yourFilePath' -Pattern 'disk state = OFF' -Context 3,0).Context.PreContext 
+0

非常感謝馬丁!之前嘗試過「-Contect 3,0」。 'Context.PreContext'幫助!它會打印除搜索字符串以外的上述2行。看起來不錯。我正在檢查是否只能打印邏輯磁盤標籤,或者至少整個行以'邏輯磁盤標籤'開頭 – jes

+0

歡迎您。只需在該行添加'-replace('=。*')'來獲得輸出結果。請考慮接受答案。 –

+0

$ diskTag =(($ CHK |選擇字符串-pattern $關閉-Context 3,0).Context.PreContext -replace( '= *')))[1] 該命令給出輸出「邏輯磁盤標籤'。以前從未使用過正則表達式。您能否讓我知道打印標籤號碼的正則表達式?謝謝! :) – jes

相關問題