У меня есть несколько хостов PowerShell в C #, откуда я выполняю код скрипта PowerShell. Код ниже взят из хоста в Add0In для Visual Studio. Проблема заключается в том, что если в коде сценария PowerShell возникает ошибка, то я не знаю файла и номера строки файла сценария PowerShell, где произошла ошибка.
Мой код хостинга выглядит так:
public Exception Execute(string scriptcode, Hashtable variables)
{
Runspace runspace = null;
Pipeline pipeline = null;
PipelineStateInfo info = null;
try
{
// Make our output window active
Logger.ShowOutputWindow();
// Create the runspace and stuff.
runspace = RunspaceFactory.CreateRunspace(host);
pipeline = runspace.CreatePipeline();
runspace.Open();
// Add our scriptcode to the pipeline
pipeline.Commands.Add(new Command(scriptcode, true));
// We don't want to get PSObjects out of the pipeline, output result as string in default way
pipeline.Commands.Add(new Command("Out-Default", true));
// Set up global variables
FillVariables(runspace, variables);
SetUpOutputStreams(pipeline);
// Run the scriptcode
Collection<PSObject> psOutput = pipeline.Invoke();
// Did it complete ok?
info = pipeline.PipelineStateInfo;
if (info.State != PipelineState.Completed)
{
return info.Reason;
}
else
{
return null; // succesful!
}
}
catch (Exception ex)
{
return ex;
}
}
Сначала у меня был сценарий в переменной scriptcode, теперь я сначала записываю код во временный файл .ps1, чтобы я мог сообщить о количестве белья в этом файле. Но я не могу найти, как выполнить код в файле, поэтому можно получить имя файла и номера строк в случае ошибок.
Есть идеи?