2016-12-23 5 views
-4

ログファイルからpowershellオブジェクトを解析するための正規表現ヘルプが必要です。これらのノートのプロパティでPowerShellのオブジェクトを作るために探しこのxmlをpowershellで解析するにはどうしたらいいですか?

ACVS_D = Date 
ACVS_TI = Info 
ACVS_C = Name 
ACVS_M = Message 

任意の助けいただければ幸いです!ありがとうございました! .logファイルのXMLの

例:

<ACVS_T> 
    <ACVS_D>12/23/2016 03:25:14.324</ACVS_D> 
    <ACVS_TI>db818c30-cdb9-4482-9b51-8f6aad8e914c,C?Cure Reports Server Component,svc-ccureMAS</ACVS_TI> 
    <ACVS_C>CrossFireWindowsService</ACVS_C> 
    <ACVS_S>SoftwareHouse.CrossFire.Server.Shared.CrossFireWindowsService.TraceMessage(String methodName, String message) 
</ACVS_S> 
    <ACVS_M> 
     CrossFireReportServer.ReconnectToServer() connected at 12/23/2016 3:25:14 AM 
    </ACVS_M> 
<ACVS_ST> 

    </ACVS_ST> 
</ACVS_T> 
<ACVS_T> 
    <ACVS_D>12/23/2016 03:25:14.324</ACVS_D> 
    <ACVS_TI>6af6dfab-c890-42c5-acd2-a9520e9742da,C?Cure Reports Server Component,svc-ccureMAS</ACVS_TI> 
    <ACVS_C>CrossFireWindowsService</ACVS_C> 
    <ACVS_S>SoftwareHouse.CrossFire.Server.Shared.CrossFireWindowsService.TraceMessage(String methodName, String message) 
</ACVS_S> 
    <ACVS_M> 
     CrossFireReportServer.ReconnectToServer() connected at 12/23/2016 3:25:14 AM 
    </ACVS_M> 
<ACVS_ST> 

    </ACVS_ST> 
</ACVS_T> 
+3

regexesでは実行しないでください。 – ndn

+2

'選択-Xml -Path Log.xml -XPath 'RootNodeHere/ACVS_T' | ForEach {$ _。Node ...} ' – TessellatingHeckler

答えて

0

それは非常に大きなファイルでない限り、私は正規表現を使用することをお勧めしません。 このような正規表現の検索文字列が必要です(?<=<ACVS_T>)((.|\n)*)(?=<\/ACVS_T>) 必要な部分ごとに調整してください。

ルートノードを追加してこれをXMLファイルとして解釈することができます。 以下の例のように:

$File = "PathToFile" 

$XML = [XML]("<Root>" + (Get-Content -Path $File) + "</Root>") 

$XML.Root.ACVS_T | ForEach-Object { 
    $Obj = '' | Select-Object -Property ACVS_D, ACVS_TI, ACVS_C, ACVS_S, ACVS_M, ACVS_ST 
    $Obj.ACVS_D = $_.ACVS_D 
    $Obj.ACVS_ST = $_.ACVS_ST 
    $Obj.ACVS_C = $_.ACVS_C 
    $Obj.ACVS_S = $_.ACVS_S 
    $Obj.ACVS_M = $_.ACVS_M 
    $Obj.ACVS_ST = $_.ACVS_ST 
    $Obj 
} 
+0

本当に助けてくれてありがとう! – user3839452

+0

あなたはこれをteの回答として受け入れてください。 –