따옴표로 PowerShell 코드를 올바르게 실행하지 못하는 것 같습니다. 나는 큰 따옴표를 사용하므로 C#은 하나의 따옴표로 간주하지만 이스케이프 처리합니다. 그러나 문제가 발생하면 우리는 변수를 화면에 씁니다. 그리고 추측 할 수있는 것처럼 따옴표가 있습니다. 그러나이를 프로세스에 넣으면 따옴표가 사라집니다.C에서 PowerShell 코드를 따옴표로 올바르게 실행할 수 없습니다.
string var = @"function blink {while ($a -ne 1) {$color = get-random -max 17 -min 1
switch($color) {
""1"" {[console]::BackgroundColor = ""Black""}
""2"" {[console]::BackgroundColor = ""DarkBlue""}
""3"" {[console]::BackgroundColor = ""DarkGreen""}
""4"" {[console]::BackgroundColor = ""DarkCyan""}
""5"" {[console]::BackgroundColor = ""DarkRed""}
""6"" {[console]::BackgroundColor = ""DarkMagenta""}
""7"" {[console]::BackgroundColor = ""DarkYellow""}
""8"" {[console]::BackgroundColor = ""Gray""}
""9"" {[console]::BackgroundColor = ""DarkGray""}
""10"" {[console]::BackgroundColor = ""Blue""}
""11"" {[console]::BackgroundColor = ""Green""}
""12"" {[console]::BackgroundColor = ""Cyan""}
""13"" {[console]::BackgroundColor = ""Red""}
""14"" {[console]::BackgroundColor = ""Magenta""}
""15"" {[console]::BackgroundColor = ""Yellow""}
""16"" {[console]::BackgroundColor = ""White""}}
}}
blink";
Console.WriteLine(var);
Console.ReadLine();
System.Diagnostics.Process.Start("powershell.exe", @"powershell.exe -ExecutionPolicy Bypass -Command {" + var + "}");
귀하의 축 어적 문자열에는 새로운 행 문자가 포함됩니다. 명령 행으로 넘어갈 때'[ENTER]'키 누르기로 변환 될 것입니다 (또는 아마도 전혀 기억이 안나기도합니다). 새 줄을 제거하고 한 줄로 만들어야합니다. –
@Simon Whitehead 거기에 있었으니. – Collinscripter
http://stackoverflow.com/a/22365350/2855568 – DeveloperGuo