[英]How to call Powershell script and pass parameters from C# windows form
我想調用 powershell 腳本,它接受來自 c# windows 表單的一些參數。
例如:- 我有 powershell 腳本,它接受 2 個參數,我有一個 windows 表單,帶有兩個文本框和一個提交按鈕。 我想從這兩個文本框中將參數傳遞給 powershell 腳本。 當我按下提交按鈕時,它將調用 powershell 腳本並在 powershell 終端上運行它,並在 powershell 終端上顯示結果。
這是 powershell 腳本的工作示例,它為您提供 char 的 ASCII 代碼。 假設您有 richTextbox1 用於顯示腳本的 output 並且您有 button1 觸發它運行 - 這是代碼:
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();
}
這將為 char 'f' 提供 ascii 代碼。
Bellow 是附在示例中的 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
--> 你就有了工作示例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.