2017-09-15 12 views
0

Invoke-sqlcmdという出力がテキストファイルにあります。私は言葉のための出力をチェックする必要がpowershellでファイルの文字列をチェックする方法

または失敗を失敗し、それが見つかった場合、私はここ

を打破する必要が私のコードです:

$var=Get-Content "C:\JenkinsDrops\TRGDB0632 tSQLt Report.txt" 
$count = 0 
foreach($item in $var -match "Failure"){ 
    $count=$count+1 
    out-host $item.ToString() 
} 

出力は次のようになります:

[PayrollUnitTests].[test sp_GetEmployeePaySlipPayElements_Basic] failed: (Failure) Unexpected/missing resultset rows! 
    |_m_|Descn      |Units|Rate |Amount|Category |isGross| 
    +---+--------------------------+-----+-----+------+---------+-------+ 
    |< |Tronc Payment Caffe  |0 |77.96|77.96 |Payment |False | 
    |= |Back Of House Tronc Caffe |1 |27.29|27.29 |Deduction|False | 
    |= |Champneys Springs Salaried|0 |0 |0.89 |Deduction|False | 
    |= |Hour Caffe    |31 |7.2 |223.2 |Payment |False | 
    |= |NI      |0 |0 |8.18 |Deduction|False | 
    |= |Tax      |0 |0 |12.4 |Deduction|False | 
    |> |Tronc Payment Caffe  |1 |77.96|77.96 |Payment |False | 

    +----------------------+ 
    |Test Execution Summary| 
    +----------------------+ 

    |No|Test Case Name             |Dur(ms)|Result | 
    +--+----------------------------------------------------------------+-------+-------+ 
    |1 |[PayrollUnitTests].[test fn_GetEmployeeBradfordFactor]   | 413|Success| 
    |2 |[PayrollUnitTests].[test sp_GetEmployeeDetailsforPreview]  | 220|Success| 
    |3 |[PayrollUnitTests].[test sp_GetEmployeesDetailsForCalc]   | 520|Success| 
    |4 |[PayrollUnitTests].[test sp_GetP11DetailsForEmployee]   | 290|Success| 
    |5 |[PayrollUnitTests].[test sp_UpdateEmployeeP11FromCalc]   | 306|Success| 
    |6 |[PayrollUnitTests].[test sprc_BACS_UpdateBACSStatus]   | 130|Success| 
    |7 |[PayrollUnitTests].[test sp_GetEmployeePaySlipPayElements_Basic]| 333|Failure| 

"fail"または "failure"という単語は、tSQLtユニットのte stが失敗し、QAへの展開が進まない可能性があります。

どうすればよいですか?

答えて

2

このアプローチは少しシンプルですが、そのトリックを行うようです。これはあなたがしようとしていることに対して機能しますか?

$failures = Select-String -Path "C:\JenkinsDrops\TRGDB0632 tSQLt Report.txt" -Pattern "Fail(ed|ure)?" 

if ($failures) 
{ 
    $failures 
    throw ("The unit tests were not successful!") 
} 

は基本的には、検索ストリングは、ファイルの内容全体を読み取り、あなたが指定されている言葉「失敗した」または「失敗」との任意の行に一致します。一致する行が出力され、スクリプトによって例外が発生します。

1

これはあなたの考えるよりも簡単です。

Get-Content "C:\JenkinsDrops\TRGDB0632 tSQLt Report.txt" | % { if ($_ -match 'Failure' -or $_ -match 'Failed') {write-host $_} } 

これは、キーワードが一致することを示すログファイルの行を出力します。

関連する問題