将 PowerShell 脚本集成到 C# 应用程序中可提供强大的自动化功能。 但是,处理包含空格的命令行参数可能很棘手。本文演示了一种从 C# 执行 PowerShell 脚本的可靠方法,可靠地传递带有嵌入空格的参数。
当存在空格时,直接传递参数的常见方法通常会失败。 解决方案在于使用 PowerShell Command
和 CommandParameter
对象来正确管理参数构造。
这是一种使用参数(甚至包含空格)从 C# 执行 PowerShell 脚本的改进方法:
Runspace
来管理 PowerShell 执行环境。Command
对象,指定 PowerShell 脚本的路径。CommandParameter
对象添加参数。这可以正确处理空格和特殊字符。 每个 CommandParameter
都采用参数名称及其值。Command
对象添加到 Pipeline
。这是反映这些步骤的改进代码示例:
<code class="language-csharp">RunspaceConfiguration runspaceConfiguration = RunspaceConfiguration.Create(); Runspace runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration); runspace.Open(); Pipeline pipeline = runspace.CreatePipeline(); // Path to your PowerShell script string scriptFile = "path/to/your/script.ps1"; // Create the Command object Command myCommand = new Command(scriptFile); // Add parameters with spaces handled correctly myCommand.Parameters.Add(new CommandParameter("key1", "value with spaces")); myCommand.Parameters.Add(new CommandParameter("key2", "another value")); // Add the command to the pipeline pipeline.Commands.Add(myCommand); // Invoke the pipeline and handle the results Collection<PSObject> results = pipeline.Invoke(); // Process the results as needed foreach (PSObject result in results) { // ... handle each result ... } runspace.Close();</code>
此方法可确保命令行参数(无论是否包含空格)正确传递到 PowerShell 脚本,从而实现 C# 和 PowerShell 之间的无缝集成。 请记住将 "path/to/your/script.ps1"
替换为脚本的实际路径。
以上是如何从 C# 将带空格的命令行参数传递给 PowerShell 脚本?的详细内容。更多信息请关注PHP中文网其他相关文章!