ホームページ > バックエンド開発 > C++ > C# から PowerShell スクリプトにコマンド ライン引数を渡すにはどうすればよいですか?

C# から PowerShell スクリプトにコマンド ライン引数を渡すにはどうすればよいですか?

Susan Sarandon
リリース: 2025-01-23 22:57:10
オリジナル
483 人が閲覧しました

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

コマンド ライン引数を使用して C# から PowerShell スクリプトを実行します

PowerShell スクリプトを実行する機能を C# アプリケーションに統合すると、多くの利点がもたらされます。ただし、この機能を最大限に活用するには、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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート