ホームページ > バックエンド開発 > C++ > スペースを含むコマンドライン引数を C# から PowerShell スクリプトに渡す方法

スペースを含むコマンドライン引数を C# から PowerShell スクリプトに渡す方法

DDD
リリース: 2025-01-23 23:06:12
オリジナル
322 人が閲覧しました

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

PowerShell スクリプトを C# アプリケーションに統合すると、強力な自動化機能が提供されます。 ただし、スペースを含むコマンドライン引数の処理は難しい場合があります。この記事では、スペースが埋め込まれた引数を確実に渡して、C# から PowerShell スクリプトを実行するための堅牢な方法を示します。

引数を直接渡す一般的なアプローチは、スペースが存在すると失敗することがよくあります。 解決策は、PowerShell の Command オブジェクトと CommandParameter オブジェクトを使用して引数の構築を適切に管理することです。

ここでは、スペースを含む引数を使用して C# から PowerShell スクリプトを実行するための洗練されたアプローチを示します。

  1. PowerShell 実行空間をインスタンス化します: PowerShell 実行環境を管理するための Runspace を作成します。
  2. コマンドの構築: PowerShell スクリプトへのパスを指定する Command オブジェクトを作成します。
  3. パラメータの追加: CommandParameter オブジェクトを使用して引数を追加します。これにより、スペースと特殊文字が正しく処理されます。 各 CommandParameter は引数名とその値を受け取ります。
  4. パイプラインに追加: Command オブジェクトを Pipeline.
  5. に追加します。
  6. パイプラインを呼び出します: パイプラインを実行し、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 中国語 Web サイトの他の関連記事を参照してください。

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