从C#启动的PowerShell脚本块中获取返回值,可以通过以下步骤实现:
Process
类启动PowerShell进程,并指定要执行的脚本块。可以使用ProcessStartInfo
类来设置进程的属性,例如文件路径、命令行参数等。Write-Output
或Write-Host
命令将需要返回的值输出到控制台。Process
类的StandardOutput
属性来获取PowerShell进程的标准输出流。可以使用StreamReader
类读取该流,并将其存储为字符串。ReadToEnd
方法读取整个输出流,或者使用ReadLine
方法逐行读取。下面是一个示例代码:
using System;
using System.Diagnostics;
using System.IO;
class Program
{
static void Main()
{
string script = @"
# PowerShell脚本块
$result = 'Hello, World!'
Write-Output $result
";
// 启动PowerShell进程
ProcessStartInfo psi = new ProcessStartInfo
{
FileName = "powershell.exe",
Arguments = "-NoProfile -ExecutionPolicy Bypass -Command \"" + script + "\"",
RedirectStandardOutput = true,
UseShellExecute = false,
CreateNoWindow = true
};
Process process = new Process
{
StartInfo = psi
};
process.Start();
// 读取PowerShell进程的输出
string output = process.StandardOutput.ReadToEnd();
process.WaitForExit();
// 输出结果
Console.WriteLine("返回值: " + output);
}
}
在这个示例中,我们使用C#的Process
类启动了一个PowerShell进程,并执行了一个简单的脚本块。脚本块中的$result
变量存储了要返回的值,并使用Write-Output
命令输出到控制台。在C#中,我们通过StandardOutput
属性获取了PowerShell进程的输出流,并将其存储为字符串。最后,我们将输出结果打印到控制台。
请注意,这只是一个简单的示例,实际应用中可能涉及到更复杂的脚本和处理逻辑。根据具体需求,可以进一步优化和扩展代码。
领取专属 10元无门槛券
手把手带您无忧上云