如何解决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 举报,一经查实,本站将立刻删除。