나는 testSwitch.ps1라는 이름이 PowerShell 스크립트를 가지고 :이 같은 PowerShell에서 직접 스크립트를 호출 할 때[스위치] 매개 변수를 C#에서 PowerShell 스크립트로 전달하는 방법은 무엇입니까?
param(
[switch] $s
)
Return 's= ' + $s
:
는.\testSwitch.ps1 -s
출력은
s= True
이며 출력 스위치가없는 경우 False입니다. 그러나 나는이 C# 코드와 같은 스크립트를 호출 할 때 :
Command command = new Command(@"testSwitch.ps1");
command.Parameters.Add(new CommandParameter("s"));
RunspaceConfiguration runspaceConfiguration = RunspaceConfiguration.Create();
using (Runspace runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration))
{
runspace.Open();
Pipeline pipeline = runspace.CreatePipeline();
pipeline.Commands.Add(command);
IEnumerable<PSObject> psresults = new List<PSObject>();
psresults = pipeline.Invoke();
Console.WriteLine(psresults.ToArray()[0].ToString());
}
출력은 다음과 같습니다
s= False
PowerShell 명령 라인과는 달리 CommandParameter 항상 스위치 매개 변수가 거짓으로 해석하는 것 통역사. 실망스러운 점은 값을 지정하지 않은 것에 대한 예외를 던지지 않고 스크립트가 [switch]
매개 변수에 대해 false 값을 보게되는 것입니다. [bool]
매개 변수와 반대로 CommandParameter
생성자에 값을 제공하지 않으면 예외가 발생합니다.