簡體   English   中英

從C#發出Powershell命令以進行控制台

[英]Issuing Powershell commands to console from C#

使用C#應用程序打開Powershell控制台后,無法將命令發送到該控制台。 我還嘗試了其他方法,這些方法已在代碼底部注釋掉,向您展示了我嘗試過的方法。 這是我在下面使用的代碼:

Using System;
Using System.Windows.Forms;
Using System.Management.Automation;

System.Diagnostics.Process CMDprocess = new System.Diagnostics.Process();
var StartProcessInfo = new System.Diagnostics.ProcessStartInfo();
StartProcessInfo.FileName = @"C:\Windows\SysWOW64\WindowsPowershell\v1.0\powershell.exe";
StartProcessInfo.Verb = "runas";

CMDprocess.StartInfo = StartProcessInfo;

CMDprocess.Start();

StartProcessInfo.Arguments = @"C:\Users\user\Desktop\Test.ps1";

CMDprocess.WaitForExit();

//Console.WriteLine("@C:\\Users\\User\\Desktop\\Test.ps1");
//StreamWriter SW = CMDprocess.StandardInput;
//StreamReader SR = CMDprocess.StandardOutput;
//SW.WriteLine(@"C:\Users\User\Desktop\Test.ps1");                
//StartProcessInfo.Arguments = @".\Test.ps1";
//System.Diagnostics.Process.Start(StartProcessInfo);

@ChrisDent建議一個很好的解決方案。

但是,代碼唯一的錯誤是,必須在啟動StartInfo之前設置StartInfo 嘗試這個:

System.Diagnostics.Process CMDprocess = new System.Diagnostics.Process();
var StartProcessInfo = new System.Diagnostics.ProcessStartInfo();
StartProcessInfo.FileName = @"C:\Windows\SysWOW64\WindowsPowershell\v1.0\powershell.exe";
StartProcessInfo.Verb = "runas";
StartProcessInfo.Arguments = @"C:\Users\user\Desktop\Test.ps1";

CMDprocess.StartInfo = StartProcessInfo;
CMDprocess.Start();           
CMDprocess.WaitForExit();

為什么不直接與PowerShell交互?

例如,這個簡單的示例執行GetProcess命令並返回輸出集合。 有很多方法可以改進它,當然,這只是一個簡單的示例。

using System.Management.Automation;
using System.Collections.ObjectModel;

public class Test
{
    public static Collection<PSObject> RunCommand()
    {
        PowerShell psHost = PowerShell.Create();
        Collection<PSObject> output = psHost.AddCommand("Get-Process").AddArgument("powershell").Invoke();

        if (psHost.HadErrors)
        {
            foreach (ErrorRecord error in psHost.Streams.Error)
            {
                throw error.Exception;
            }
            return null;
        }
        else
        {
            return output;
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM