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