【问题标题】:System.Diagnostics.Process closing powershell immediatelySystem.Diagnostics.Process 立即关闭 powershell
【发布时间】:2020-09-18 14:32:45
【问题描述】:

我有一个问题,我试图通过 MSI 安装程序部署驱动程序安装,它包含 .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 核心。

感谢您花时间阅读本文,非常感谢您的帮助。

【问题讨论】:

  • power shell 脚本必须与 c# 可执行文件位于同一文件夹中,否则您需要脚本的路径:string newArgs = "-File" + powerShellScript;
  • 我现在已经添加了 powershell 脚本路径,我省略了这一行,因为我认为没有必要回答这个问题。
  • 调试打开一个 cmd.exe 窗口。使用 cmd/K 可执行文件。大写的 K 选项在可执行文件终止后保持窗口打开,以便您可以阅读错误。我怀疑缺少环境变量。
  • 我将如何实现 dev/null?
  • 在我们的项目场景中无法使用 .NET 内核,我们只在 Windows 上运行,因此恐怕 Unix/Linux 是不可能的。

标签: c# .net powershell installation windows-installer


【解决方案1】:

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

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-16
    • 2016-10-05
    • 1970-01-01
    相关资源
    最近更新 更多