C#でコマンドの実行結果を取得する方法


  1. Processクラスを使用する方法:

    using System;
    using System.Diagnostics;
    class Program
    {
    static void Main()
    {
        string command = "コマンドを入力してください";
    
        Process process = new Process();
        process.StartInfo.FileName = "cmd.exe";
        process.StartInfo.Arguments = "/c " + command;
        process.StartInfo.RedirectStandardOutput = true;
        process.StartInfo.UseShellExecute = false;
        process.Start();
        string output = process.StandardOutput.ReadToEnd();
        process.WaitForExit();
        Console.WriteLine("実行結果: " + output);
    }
    }
  2. PowerShellを使用する方法:

    using System;
    using System.Management.Automation;
    class Program
    {
    static void Main()
    {
        string command = "コマンドを入力してください";
    
        using (PowerShell powerShell = PowerShell.Create())
        {
            powerShell.AddScript(command);
            var results = powerShell.Invoke();
            foreach (var result in results)
            {
                Console.WriteLine("実行結果: " + result.ToString());
            }
        }
    }
    }
  3. WMIを使用する方法:

    using System;
    using System.Management;
    class Program
    {
    static void Main()
    {
        string command = "コマンドを入力してください";
    
        ConnectionOptions connectionOptions = new ConnectionOptions();
        connectionOptions.Authentication = AuthenticationLevel.PacketPrivacy;
    
        ManagementScope managementScope = new ManagementScope("\\\\localhost\\root\\cimv2", connectionOptions);
        managementScope.Connect();
        ObjectGetOptions objectGetOptions = new ObjectGetOptions();
        ManagementPath managementPath = new ManagementPath("Win32_Process");
        using (ManagementClass processClass = new ManagementClass(managementScope, managementPath, objectGetOptions))
        {
            using (ManagementBaseObject inParams = processClass.GetMethodParameters("Create"))
            {
                inParams["CommandLine"] = command;
                using (ManagementBaseObject outParams = processClass.InvokeMethod("Create", inParams, null))
                {
                    Console.WriteLine("実行結果: " + outParams["ReturnValue"].ToString());
                }
            }
        }
    }
    }

これらの方法を使用すると、外部コマンドの実行結果を取得することができます。必要に応じてコードをカスタマイズしてください。また、例外処理も適切に行うことをおすすめします。