Как вызвать скрипт Powershell и передать параметры из формы C# windows - PullRequest
0 голосов
/ 07 мая 2020

Я хочу вызвать сценарий powershell, который принимает некоторые параметры из формы c# windows.

Например: - У меня есть сценарий powershell, который принимает 2 параметра, и у меня есть форма windows с двумя текстовое поле и кнопка отправки. Я хочу передать параметры сценарию PowerShell из этих двух текстовых полей. Когда я нажимаю кнопку отправки, он вызывает сценарий PowerShell и запускает его на терминале PowerShell, а также показывает результат в терминале PowerShell.

Ответы [ 2 ]

0 голосов
/ 07 мая 2020

Вот рабочий пример сценария PowerShell, который дает вам код ASCII для char. Предполагая, что у вас есть richTextbox1 для отображения вывода скрипта и что у вас есть кнопка 1, которую вы запускаете, - вот код:

        public void RunPowershell()
        {
            var ps1File = @"C:\asc.ps1";

            ProcessStartInfo startInfo = new ProcessStartInfo();
            startInfo.FileName = @"powershell.exe";
            startInfo.Arguments = $@"& '{ps1File}' f";
            startInfo.RedirectStandardOutput = true;
            startInfo.RedirectStandardError = true;
            startInfo.UseShellExecute = false;
            startInfo.CreateNoWindow = true;
            Process process = new Process();
            process.StartInfo = startInfo;
            process.Start();

            string output = process.StandardOutput.ReadToEnd();
            string errors = process.StandardError.ReadToEnd();

            richTextBox1.Text = $"Output: {output}{Environment.NewLine}Errors = {errors}";
        }

        private void button1_Click(object sender, EventArgs e)
        {
            RunPowershell();
        }

Это даст код ascii для char 'f'.

Ниже приведен сценарий PS, прикрепленный к примеру:

function Syntax {
    Write-Host
    Write-Host "Asc.ps1,  Version 1.00"
    Write-Host "Returns the numeric ASCII value for the specified character"
    Write-Host
    Write-Host "Usage:   " -NoNewline
    Write-Host "ASC.PS1  char" -ForegroundColor White
    Write-Host
    Write-Host "Returns: Numeric ASCII value of " -NoNewline
    Write-Host "char" -ForegroundColor White
    Write-Host
    Write-Host "Notes:   The ASCII value is written to Standard Output (usually the screen)"
    Write-Host "         as well as returned as `"errorlevel`""
    Write-Host "         If more than 1 character is passed on the command line, only the first"
    Write-Host "         character will be used, the remainder of the string will be ignored."
    Write-Host "         The `"errorlevel`" will equal the ASCII value, or 0 if no parameter"
    Write-Host "         was passed, or -1 in case of errors or for this help"
    Write-Host
    Write-Host "Credits: Code to pass exit code as `"errorlevel`" to the calling batch file"
    Write-Host "         or PowerShell script by Serge van den Oever:"
    Write-Host "         weblogs.asp.net/soever/returning-an-exit-code-from-a-powershell-script" -ForegroundColor DarkGray
    Write-Host
    Write-Host "Written by Rob van der Woude"
    Write-Host "http://www.robvanderwoude.com"

    $Host.SetShouldExit( -1 )
    Exit
}

if ( $args.Length -eq 1 ) {
    if ( $args[0] -eq "/?" ) {
        Syntax
    } else {
        $input = $args[0]
    }
} else {
    Syntax
}

if ( $input -eq "" ) { $input = [string][char]0 }

[char]$char = $input[0]

Write-Host ([byte]$char) -NoNewline

# Pass exit code to calling batch or PowerShell script, by Serge van den Oever
# https://weblogs.asp.net/soever/returning-an-exit-code-from-a-powershell-script
$Host.SetShouldExit( [byte]$char )
Exit

Сохраните его на диск C, назовите его asc.ps1 ->, и у вас есть рабочий пример.

0 голосов
/ 07 мая 2020

Просто запустите powershell.exe с параметрами

Чтобы запустить любое внешнее приложение, вы можете проверить, как работает процесс.

Класс процесса

...