Экранирование амперсанда при выполнении скрипта
Я пытаюсь выполнить PowerShell из WPF, указав на powershell.exe путь. У меня есть следующий код
Ошибка, которую я получаю, заключается в том, что символ амперсанда (&) не разрешен. Оператор & зарезервирован для будущего использования; оберните амперсанд в двойные кавычки ("&"), чтобы передать его как часть строки.
Из любви к программному обеспечению: вызов сценария PowerShell в пути с пробелом из командной строки[^]
Мой сценарий выглядит следующим образом
C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Unrestricted -Command "& 'c:\Test PS\Palindrome.ps1' -param Hello"
который отлично работает, когда я непосредственно копирую вставку в PowerShell, но не из приложения Win froms
Код для того же самого
ConsoleApplication2.rar -Google Диск[^]
Что я уже пробовал:
ProcessStartInfo proc = new ProcessStartInfo(); string PSPath = string.Concat(Environment.SystemDirectory, "\\WindowsPowerShell\\v1.0\\powershell.exe"); proc.FileName = PSPath; string DirectoryPath = System.IO.Path.GetDirectoryName(Assembly.GetEntryAssembly().Location); string script1 = string.Concat(DirectoryPath, "\\Palindrome.ps1 -param Hello"); var match1 = Regex.Split(script1, @"(?<=\.ps1)\s+"); string newfile1 = string.Concat("\"& '" + match1[0] + "'", " ", match1[1], "\""); string ScriptPath = string.Concat(PSPath, " -ExecutionPolicy Unrestricted -Command "); ScriptPath = string.Concat(ScriptPath, newfile1); //ScriptPath = string.Concat(ScriptPath, script); proc.Arguments = ScriptPath; using (Process p = new Process()) { proc.Verb = "runas"; proc.UseShellExecute = false; proc.RedirectStandardError = true; p.StartInfo = proc; p.Start(); StreamReader myStreamReader = p.StandardError; p.WaitForExit(); if (p.ExitCode != 0) { MessageBox.Show(myStreamReader.ReadToEnd()); } }