gpt4 book ai didi

c# - 在 C# 中读取 Powershell 进度条输出

转载 作者:行者123 更新时间:2023-11-30 15:23:04 34 4
gpt4 key购买 nike

我有一个从事件处理程序调用 powershell 脚本的程序。 powershell脚本是第三方提供的,我没有任何控制权。

powershell 脚本使用 powershell 进度条。我需要阅读 powershell 脚本的进度,但是由于进度条,System.Management.Automation 命名空间不将其视为输出。是否可以从外部程序读取powershell进度条的值?

Process process = new Process();
process.StartInfo.FileName = "powershell.exe";
process.StartInfo.Arguments = String.Format("-noexit -file \"{0}\"", scriptFilePath);

process.Start();

最佳答案

您需要将 DataAdded 事件的事件处理程序添加到 Progress stream您的 PowerShell 实例:

using (PowerShell psinstance = PowerShell.Create())
{
psinstance.AddScript(@"C:\3rd\party\script.ps1");
psinstance.Streams.Progress.DataAdded += (sender,eventargs) => {
PSDataCollection<ProgressRecord> progressRecords = (PSDataCollection<ProgressRecord>)sender;
Console.WriteLine("Progress is {0} percent complete", progressRecords[eventargs.Index].PercentComplete);
};
psinstance.Invoke();
}

(如果您愿意,您当然可以用委托(delegate)或常规事件处理程序替换我示例中的 lambda 表达式)

关于c# - 在 C# 中读取 Powershell 进度条输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34814719/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com