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

如何从 C# 将命令行参数传递到 PowerShell 脚本?

Susan Sarandon
Susan Sarandon原创
2025-01-23 22:57:10485浏览

How Can I Pass Command Line Arguments to PowerShell Scripts from C#?

从 C# 使用命令行参数执行 PowerShell 脚本

在 C# 应用程序中集成执行 PowerShell 脚本功能,可以带来诸多优势。然而,要充分利用此功能,务必了解如何在 C# 代码中向 PowerShell 脚本传递命令行参数。本指南将探讨这个常见场景,并提供全面的解决方案,帮助您实现 PowerShell 脚本与参数的无缝执行。

问题定义

要从 C# 执行 PowerShell 脚本,您可能会使用以下代码模板:

<code class="language-csharp">RunspaceConfiguration runspaceConfiguration = RunspaceConfiguration.Create();

Runspace runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration);
runspace.Open();

RunspaceInvoke scriptInvoker = new RunspaceInvoke(runspace);

Pipeline pipeline = runspace.CreatePipeline();
pipeline.Commands.Add(scriptFile);

results = pipeline.Invoke();</code>

在此代码中,scriptFile 表示 PowerShell 脚本的路径(例如,“C:Program FilesMyProgramWhatever.ps1”)。如果您的脚本使用“-key Value”格式的命令行参数(其中 Value 可以包含空格),您可能会在有效传递这些参数时遇到困难。

解决方案

要解决此问题,您需要为脚本文件构建一个单独的命令对象,并使用 CommandParameter 对象指定参数:

<code class="language-csharp">Command myCommand = new Command(scriptfile);
CommandParameter testParam = new CommandParameter("key", "value");
myCommand.Parameters.Add(testParam);
pipeline.Commands.Add(myCommand);</code>

此方法确保正确处理命令行参数,包括包含空格的参数。

完整的代码示例

总而言之,以下是包含解决方案的完整修改后的代码:

<code class="language-csharp">RunspaceConfiguration runspaceConfiguration = RunspaceConfiguration.Create();

Runspace runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration);
runspace.Open();

Pipeline pipeline = runspace.CreatePipeline();

// 使用参数构建单独的命令
Command myCommand = new Command(scriptfile);
CommandParameter testParam = new CommandParameter("key", "value");
myCommand.Parameters.Add(testParam);

pipeline.Commands.Add(myCommand);

results = pipeline.Invoke();</code>

通过将此解决方案集成到您的 C# 代码中,您将能够自信地执行 PowerShell 脚本并传递命令行参数,即使参数中包含空格也能正常工作。此增强的功能将使您能够将 PowerShell 脚本无缝集成到您的 C# 应用程序中。

以上是如何从 C# 将命令行参数传递到 PowerShell 脚本?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn