2016-09-13 4 views
0

私はPowerShellのからsqlplusと呼んでいると私は何かが間違っていた場合、ユーザーにエラーメッセージを表示しようとしています。問題がなければ、スクリプトを続行するだけです。ハウツー

sqlcmd -S $serverLower -U $user -P $user -d $user -i $file -r1 2>errors.txt 1>$null 
if (CheckIfFileExistsAndNotEmpty errors.txt) 
    { 
    get-content errors.txt | write-host 
    } 

1つの意志出力にエラーを設定-rオプション、および2>エラー:

は、これは私が、私はこのようにそれを行うには、管理sqlcmdのために

sqlplus -S $user/[email protected]$server @$file 

を使用しているものです。 txtはそれらをファイルに書き込みます。

可能ならば、私は(SQLPLUSで実行されるスクリプトは、ユーザ定義されていると私はそれらを変更するべきではない場合、私はそれをしたいと思い

答えて

0

SPOOLを使用せずに、私は自分自身を見つけた答えSQLPlusをのために類似した何かをしたい:。

AddAsFirstLine $file "SPOOL $errorfilepath" 
    Add-Content -Path $file -Value "SPOOL off" 
    sqlplus -S $user/[email protected]$server @$file 1>$null 

    $errors = Select-String -Path $errorfilepath -Pattern "(SP2|ORA|Msg.*Level.*State.*Server.*Line|SQLConverter-Error:|Init-Error:|Invalid.filename)" 
    Set-Content -Path errors.txt $errors 
    Remove-Item $errorfilepath -Force | Out-Null 
    } 

    if (CheckIfFileExistsAndNotEmpty errors.txt) 
    { 
     Write-Host "Error while executing script" 
     get-content errors.txt | write-host 
    } 

AddAsFirstLineとCheckIfFileExistsAndNotEmptyは、私が宣言した関数です。

関連する問題