以下是我的场景:我有add-data和add-bulkdata cmdlet,两者都是用pscmdlet
派生的C#编写的,add-bulkdata带有一个csv文件,每行都被送到add-data cmdlet。添加数据cmdlet可能会抛出终止异常,如果确实如此,我不知道如何在add-bulkdata cmdlet中接收它,在bulkdata cmdlet中我得到commandinvocationexception
但它没有ErrorRecord
底层添加数据已经设定。此外,如果我查询pipeline.errors它没有给我任何信息。
处理此类情况的最佳方法是什么?
我的Add-Bulkdata ProcessRecord()
函数看起来像这样:
InitialSessionState initial = InitialSessionState.CreateDefault();
initial.ImportPSModule(new[] { @"C:\mybinary.dll" });
Runspace runspace = RunspaceFactory.CreateRunspace(initial);
runspace.Open();
Pipeline pipeline = runspace.CreatePipeline();
pipeline.Commands.Add(cmd); //cmd is add-data cmdlet
pipeline.Commands.Add("out-string"); // I have tried with and without this
Collection<PSObject> results = pipeline.Invoke();
Collection<object> errors = pipeline.Error.ReadToEnd();