首页 > 后端开发 > C++ > 如何从 C# 将带空格的命令行参数传递给 PowerShell 脚本?

如何从 C# 将带空格的命令行参数传递给 PowerShell 脚本?

DDD
发布: 2025-01-23 23:06:12
原创
325 人浏览过

How to Pass Command-Line Arguments with Spaces to PowerShell Scripts from C#?

将 PowerShell 脚本集成到 C# 应用程序中可提供强大的自动化功能。 但是,处理包含空格的命令行参数可能很棘手。本文演示了一种从 C# 执行 PowerShell 脚本的可靠方法,可靠地传递带有嵌入空格的参数。

当存在空格时,直接传递参数的常见方法通常会失败。 解决方案在于使用 PowerShell CommandCommandParameter 对象来正确管理参数构造。

这是一种使用参数(甚至包含空格)从 C# 执行 PowerShell 脚本的改进方法:

  1. 实例化 PowerShell Runspace: 创建一个 Runspace 来管理 PowerShell 执行环境。
  2. 构造命令: 创建一个 Command 对象,指定 PowerShell 脚本的路径。
  3. 添加参数: 使用 CommandParameter 对象添加参数。这可以正确处理空格和特殊字符。 每个 CommandParameter 都采用参数名称及其值。
  4. 添加到管道:Command 对象添加到 Pipeline
  5. 调用管道:执行管道,启动PowerShell脚本执行。

这是反映这些步骤的改进代码示例:

<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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板