我希望能够在我的c#应用程序中运行以下Powershell命令,并在输出到达时接收输出(进度)。
我已经尝试了一些解决方案,但我似乎无法让它们正常工作,或者我只是做了一些完全错误的事情......
命令是:
导入模块AppVPkgConverter
Get-Command -Module AppVPkgConverter
ConvertFrom-AppvLegacyPackage -DestinationPath“C:\ Temp”-SourcePath“C:\ Temp2”
目前我只是执行一个不理想的ps1文件,因为我看不到输出。
任何帮助或一些代码都将受到赞赏..
由于
答案 0 :(得分:0)
这是一个古老的问题,但是为了编译起见,这是我的解决方案:
using (PowerShell powerShell = PowerShell.Create()){
// Source functions.
powerShell.AddScript("Import-Module AppVPkgConverter");
powerShell.AddScript("Get-Command -Module AppVPkgConverter");
powerShell.AddScript("ConvertFrom-AppvLegacyPackage -DestinationPath "C:\Temp" -SourcePath "C:\Temp2"");
// invoke execution on the pipeline (collecting output)
Collection<PSObject> PSOutput = powerShell.Invoke();
// loop through each output object item
foreach (PSObject outputItem in PSOutput)
{
// if null object was dumped to the pipeline during the script then a null object may be present here
if (outputItem != null)
{
Console.WriteLine($"Output line: [{outputItem}]");
}
}
// check the other output streams (for example, the error stream)
if (powerShell.Streams.Error.Count > 0)
{
// error records were written to the error stream.
// Do something with the error
}
}
干杯!
答案 1 :(得分:-3)