簡體   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