C#에서 PowerShell 스크립트에 공백이 있는 명령줄 인수 전달
이 가이드에서는 C# 애플리케이션에서 PowerShell 스크립트를 실행하는 문제, 특히 공백이 포함된 명령줄 인수를 처리하는 문제를 다룹니다.
문제: 공백이 포함된 인수를 직접 전달하면 C#에서 PowerShell 스크립트를 호출할 때 오류가 발생하는 경우가 많습니다.
해결책: 핵심은 명령 실행 프로세스 내에서 인수를 올바르게 캡슐화하는 것입니다. 이 예에서는 System.Management.Automation
네임스페이스:
명령 생성: PowerShell 스크립트 경로를 가리키는 Command
개체를 시작합니다.
<code class="language-csharp">Command myCommand = new Command(scriptfile);</code>
매개변수 정의: 각 명령줄 인수를 CommandParameter
개체로 정의합니다. 결정적으로 공백이 포함된 인수가 올바르게 처리되는지 확인하세요. 이는 일반적으로 큰따옴표로 묶어 수행됩니다.
<code class="language-csharp">CommandParameter param1 = new CommandParameter("arg1", "value1"); CommandParameter param2 = new CommandParameter("arg2", "\"value with spaces\""); // Note the double quotes</code>
매개변수 추가: CommandParameter
개체를 Command
개체의 Parameters
컬렉션에 추가합니다.
<code class="language-csharp">myCommand.Parameters.Add(param1); myCommand.Parameters.Add(param2);</code>
파이프라인 실행: Command
을 PowerShell 파이프라인에 통합하고 실행합니다.
<code class="language-csharp">RunspaceConfiguration runspaceConfiguration = RunspaceConfiguration.Create(); Runspace runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration); runspace.Open(); Pipeline pipeline = runspace.CreatePipeline(); pipeline.Commands.Add(myCommand); Collection<PSObject> results = pipeline.Invoke(); runspace.Close();</code>
전체 예:
이 전체 코드 조각은 공백이 있는 인수를 사용하여 PowerShell 스크립트를 실행하는 방법을 보여줍니다.
<code class="language-csharp">string scriptfile = @"C:\path\to\your\script.ps1"; // Replace with your script path string arg1 = "value1"; string arg2 = "value with spaces"; RunspaceConfiguration runspaceConfiguration = RunspaceConfiguration.Create(); Runspace runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration); runspace.Open(); Pipeline pipeline = runspace.CreatePipeline(); Command myCommand = new Command(scriptfile); myCommand.Parameters.Add(new CommandParameter("arg1", arg1)); myCommand.Parameters.Add(new CommandParameter("arg2", "\"" + arg2 + "\"")); //Escape spaces Collection<PSObject> results = pipeline.Invoke(); runspace.Close(); // Process the results foreach (PSObject result in results) { Console.WriteLine(result.BaseObject); }</code>
"C:pathtoyourscript.ps1"
을 PowerShell 스크립트의 실제 경로로 바꾸는 것을 잊지 마세요. 이 개선된 솔루션은 공백이 포함된 인수를 처리할 때에도 안정적인 실행을 보장합니다.
위 내용은 C#에서 PowerShell 스크립트에 공백이 포함된 명령줄 인수를 어떻게 전달합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!