如何从 C# 中的 powershell 脚本中捕获退出代码
Posted
技术标签:
【中文标题】如何从 C# 中的 powershell 脚本中捕获退出代码【英文标题】:How to catch exit code from a powershell script in c# 【发布时间】:2020-08-12 18:25:27 【问题描述】:我有一个由 c# 运行的 powershell 脚本。以下是我的代码:
string data = System.IO.File.ReadAllText(@"C:\Users\user1\Desktop\power.ps1");
using (PowerShell PowerShellInstance = PowerShell.Create())
PowerShellInstance.AddScript(data);
IAsyncResult result = PowerShellInstance.BeginInvoke();
while (!result.IsCompleted)
Logger.Info("Wait initiated");
Thread.Sleep(5000);
完成脚本后如何读取退出代码?
【问题讨论】:
【参考方案1】:从这里Executing PowerShell scripts from C#
// begin invoke execution on the pipeline
// use this overload to specify an output stream buffer
IAsyncResult result = PowerShellInstance.BeginInvoke<PSObject, PSObject>(null, outputCollection);
...
foreach (PSObject outputItem in outputCollection)
//TODO: handle/process the output items if required
Console.WriteLine(outputItem.BaseObject.ToString());
【讨论】:
什么是 outputCollection? PSDataCollection以上是关于如何从 C# 中的 powershell 脚本中捕获退出代码的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 C# 将 powershell 脚本编码为 base64 UTF16-LE 字符串