Регистрация ошибок с использованием C # - PullRequest
0 голосов
/ 05 ноября 2018

В настоящее время у меня есть скрипт, который я запускаю в Powershell, который запускает несколько скриптов одновременно и регистрирует то, что было запущено, с помощью специального сообщения в текстовом файле .txt.

Однако в момент исполнения я хочу иметь возможность также регистрировать в отдельном файле .txt любые ошибки, которые могут возникнуть, с подробным описанием ошибки и с каким сценарием она влияет. Я знаю, что мне нужно использовать Try / Catch, но я не могу думать, что использовать для моего Catch. Вот то, что я уже получил:

ConvDlls;

clear;
$sqldir = "";
$DBPath = "";

$ConType = "ADS";



$SharedFunc = New-Object PelCFunc.SharedFunc;
$DS = New-Object System.Data.DataSet;
$Log = [MessageLogging.Msgs]::Instance;
$FullDBPath = [System.IO.Path]::Combine($DBPath,"PICS.Add");
$ConID = [guid]::NewGuid.ToString();
$Database = [PelCons.DatabaseManualMode]::Instance($ConID);



###Setup Database object
$Database.ConType = $ConType;
$Database.Connection = $SharedFunc.PelNewADSCon($FullDBPath);
Write-Output "Connection Created";


$Database.Connection.Close();
$Database.Connection.Open();

foreach ($file in [System.IO.Directory]::GetFiles($sqldir,"*.sql", 
[System.IO.SearchOption]::AllDirectories))
{
$file = [System.IO.FileInfo]::new($file);


$Log.SetLogDir("");
$str_msg = "****This script has been run successfully****`r`n`r`nScript 
Run:$file`r`n`r`n$([System.IO.File]::ReadAllText($file.FullName))";


$Log.AddMsg($str_msg);
Write-Output $str_msg;


$sql = [System.IO.File]::ReadAllText($file.FullName);


$Database.Command.CommandText = $sql;
{

try{
$Database.Command.ExecuteNonQuery();
}

catch (exception ex)
{

}

}
}
$Database.Connection.Close();

Write-Output "Complete";

1 Ответ

0 голосов
/ 05 ноября 2018

Вы можете использовать переменную $MyInvocation (свойство .MyCommand), чтобы получить информацию о скрипте. В блоке catch запишите желаемую информацию в нужный файл, например,

 out-file "$($MyInvocation.MyCommand.Name).log"

Вы также можете использовать $Error[0] для получения информации о последней ошибке.

...