博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解决“System.Diagnostics.Process调用批处理运行powershell.exe”的问题
阅读量:6712 次
发布时间:2019-06-25

本文共 1008 字,大约阅读时间需要 3 分钟。

问题场景:

在一个ASP.NET程序中,需要调用一个命令行下的bat(批处理)程序完成一些操作,而在该bat程序中又要调用powershell.exe -command运行powershell代码。

示例代码如下:

powershell.exe -command "[xml]$config = Get-Content repositories.config; "

如何在ASP.NET中调用bat程序员,请参考:。

调用bat的部分代码:

ProcessStartInfo info = new ProcessStartInfo(); info.WorkingDirectory = workingDirectory; info.CreateNoWindow = true; info.RedirectStandardOutput = true; info.RedirectStandardInput = true; info.RedirectStandardError = true; info.UseShellExecute = false; System.Diagnostics.Process p = new Process(); p.StartInfo = info; p.Start(); output.Append(p.StandardOutput.ReadToEnd()); p.WaitForExit(); p.Close();

遇到的问题:

通过System.Diagnostics.Process执行bat之后,不能正常退出,也就是上面代码中的p.WaitForExit()一直在等待bat退出。

从浏览器看,浏览器一直处于“等待服务器返回”状态。

在服务器上,通过任务管理器可以看到一个powershell.exe进程一直存在。强制结束这个进程,浏览器就能得到正常返回。

解决方案:

根据以前的经验判断,应该是powershell.exe处于等待输入状态,开始不知道如何让powershell.exe退出这个状态。后来在stackoverflow找到很简单的,只要增加4个字符“<NUL”,bat文件改为如下代码,问题就解决了:

powershell.exe -command "[xml]$config = Get-Content repositories.config; " < NUL

转载地址:http://yaxlo.baihongyu.com/

你可能感兴趣的文章
强化学习遭遇瓶颈!分层RL将成为突破的希望
查看>>
接口限流的常用算法汇总
查看>>
Kong 发布 Kong Brain 和 Kong Immunity,可进行智能自动化和适应性监控
查看>>
IBM推出实时跨境支付解决方案Blockchain World Wire
查看>>
IBM中国开发中心吉燕勇: 通过Cloud Data Services打造新型认知计算数据分析云平台...
查看>>
Hybrid App走向“轻混”,剖析WeX5开源高性能HTML5 App开发框架
查看>>
网易戏精ARCore短视频新玩法实践
查看>>
华泰证券:如何自研高效可靠的交易系统通信框架?
查看>>
使用Flutter之后,我们的CPU占用率降了50%
查看>>
我们究竟应不应该使用框架?
查看>>
如何基于Kubernetes构建完整的DevOps流水线
查看>>
Deis发布1.4版本,支持Microsoft Azure
查看>>
用于.NET Core的ORM
查看>>
慎用!BLEU评价NLP文本输出质量存在严重问题
查看>>
如何撰写好文档?精益文档的六个实践
查看>>
ArchSummit微课堂|蘑菇街DevOps实践及心路历程分享
查看>>
随手记统一监控平台Focus设计解析
查看>>
中国平安“豪赌”科技?从产险业务IT变形计聊起
查看>>
RSocket:一个面向反应式应用程序的新型应用网络协议
查看>>
ElasticSearchDsl
查看>>