Как запустить простую команду Powershell из моего проекта на C # в Visual Studio 2015? - PullRequest
0 голосов
/ 05 июля 2018

У меня есть простая однострочная команда Powershell, которая разблокирует все библиотеки в определенной папке. Я хочу запустить эту команду из моего метода C # main() в VS 2015.

Я пытался использовать Runspace, но VS не распознает его.

Как я могу это сделать? Какие расширения мне, возможно, придется установить?

Ответы [ 2 ]

0 голосов
/ 06 июля 2018

Прежде всего, я люблю вопрос. Я серьезный фанат PowerShell и люблю узнавать что-то новое о PowerShell почти каждый день.

Теперь ответим.

Вот что я собираюсь сделать. Во-первых, я собираюсь открыть PowerShell, не открывая окно. Затем я собираюсь запустить команду Get-Process, поскольку она предоставляет некоторую полезную информацию. Наконец, я собираюсь распечатать результаты на экране, а затем подождать, пока пользователь нажмет любую клавишу, чтобы убедиться, что он увидел ответ. (Если вы хотите, чтобы это было в строке, посмотрите на StringBuilder.) Это в основном сделает то, что вы просили; выполните одну простую команду и получите вывод.

Вот код.

using System;
using System.Diagnostics;

namespace powershellrun {
    public class program {
        public static void Main(string[] args) {
            //Open up PowerShell with no window
            Process ps = new Process();
            ProcessStartInfo psinfo = new ProcessStartInfo();
            psinfo.FileName = "powershell.exe";
            psinfo.WindowStyle = ProcessWindowStyle.Hidden;
            psinfo.UseShellExecute = false;
            psinfo.RedirectStandardInput = true;
            psinfo.RedirectStandardOutput = true;
            ps.StartInfo = psinfo;
            ps.Start();
            //Done with that.

            //Run the command.
            ps.StandardInput.WriteLine("Get-Process");
            ps.StandardInput.Flush();
            ps.StandardInput.Close();
            ps.WaitForExit();
            //Done running it.

            //Write it to the console.
            Console.WriteLine(ps.StandardOutput.ReadToEnd());
            //Done with everything.

            //Wait for the user to press any key.
            Console.ReadKey(true);
        }
    }
}

Это должно сделать работу за вас.

0 голосов
/ 05 июля 2018

Попробуйте следующее, Process.Start должен делать как вам нужно.

System.Diagnostics.Process.Start("Path/To/Powershell/Script.ps1");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...