繁体   English   中英

如何使用 C# 将参数传递给命令行实用程序?

[英]How to pass arguments to command line utility using c#?

我正在编写一个应用程序,它有时会启动 win-acme 并需要将一些参数传递给它。 我成功地打开了 powershell 并启动了 win-acme,但它没有向它传递参数。 所以,我有这个代码:

Process wacsProcess = Process.Start(new ProcessStartInfo
    {
        FileName = @"C:\Windows\System32\WindowsPowershell\v1.0\powershell.exe",
        Arguments = (@"cd C:\inetpub\letsencrypt ; .\wacs.exe ; N"),
        RedirectStandardOutput = true,
        UseShellExecute = false,
        WindowStyle = ProcessWindowStyle.Hidden
   });

File.WriteAllText(".\\OutPutAfterFirstLaunch.txt", 
    wacsProcess.StandardOutput.ReadToEnd());

它打开命令行实用程序,但不给它最后一个参数“N”。 我想那是因为我将此参数传递给了 powershell,但它仍在使用 win-acme。 它看起来像这样:

在此处输入图像描述

有没有办法使用 C# 将参数传递给命令行实用程序?

这就是这个应用程序的设计方式。 它旨在对新证书进行交互。 请参阅包含所有允许的命令行参数的文档: https ://www.win-acme.com/reference/cli

是否有特定原因必须从 powershell 启动该进程?

如果您直接启动它,就像您从 Powershell 窗口读取输出一样,您应该能够读取该进程的标准输出(无论如何,输出的 powershell 显示只是该进程的标准输出。)

您也可以尝试将 N 参数与可执行文件一起传递,

Arguments = (@"cd C:\inetpub\letsencrypt ; .\wacs.exe N;"),

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM