微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

System.Diagnostics立即关闭进程Powershell

如何解决System.Diagnostics立即关闭进程Powershell

我遇到一个问题,我试图通过MSI Installer部署驱动程序安装,它包含.CAT和.INF文件并将它们输出到目录,通常从这里,基础架构工程师可以右键单击.INF文件并按安装,但是我们正在尝试简化此过程并使该步骤自动化。

通过C#,我有一个利用System.Diagnostics.Process命名空间的类来生成Powershell进程,以运行包含以下简单命令的Powershell脚本:

var process = new System.Diagnostics.Process();

var newProcessInfo = new System.Diagnostics.processstartinfo();

string powerShellScript = @"C:\PowershellScript\DriverInstall.ps1"

newProcessInfo.FileName = @"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"

newProcessInfo.Verb = "runas";  
string newArgs = "-File " + powerShellScript;
newProcessInfo.Arguments = newArgs;
process.StartInfo = newProcessInfo;
process.Start();

Powershell脚本命令如下:

Get-ChildItem "C:\DriverLocation" -Recurse -Filter "*inf" | ForEach-Object {PNPUtil.exe /add-driver $_.FullName /install }

从powershell运行此程序时,它可以按预期工作,但是,如果我尝试从C#类生成一个powershell进程,则它不起作用,出现一些红色错误消息文本,但进程窗口会立即生成关闭,所以我无法确定错误是什么。

本质上,我要么需要将Powershell进程的输出输出到文本文件,要么需要Powershell窗口保持不变,以便可以确定为什么从System.Diagnostics.Process命名空间运行时脚本无法运行。

我试图编辑注册表,以便Powershell保持打开状态而无济于事。

请不要建议使用System.Management.Automation.Powershell命名空间,因为在我们的项目方案中无法使用.NET Core。

感谢您抽出宝贵的时间阅读本文,对您的帮助非常感谢。

解决方法

解决方案是在powershell脚本中指定执行策略,当从powershell窗口运行时,它具有本地管理员权限,因此不需要指定执行策略,但是由于它是从单独的进程中产生的,因此只具有远程访问权限,因此它将不允许脚本执行..从未设法输出特定的错误消息,而是通过消除过程确定了解决方案。

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。