Кавычки в связке powershell+c#
Цитата: Никита от 26.07.2021, 17:01Добрый день, подскажите пожалуйста, может кто сталкивался с такой проблемой кавычек в связке powershell+c#:
мне нужно запустить powershell и в нём выполнить следующую команду
Get-CimInstance -query "Select * From __Namespace Where Name='CCM'" -Namespace "root" | Remove-CimInstance -Verbose -Confirm:$falseвот у меня есть метод, который создаёт процесс powershell'a
void POWERSHELL(string arguments) { buffer = ""; Process POWERSHELL = new Process(); POWERSHELL.StartInfo.FileName = "powershell"; POWERSHELL.StartInfo.Arguments = arguments; POWERSHELL.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; POWERSHELL.StartInfo.RedirectStandardOutput = true; POWERSHELL.StartInfo.UseShellExecute = false; POWERSHELL.StartInfo.CreateNoWindow = true; POWERSHELL.Start(); buffer = POWERSHELL.StandardOutput.ReadToEnd(); POWERSHELL.WaitForExit(); POWERSHELL.Close(); }вот я его вызываю в программе
await Task.Run(() => { POWERSHELL(@"Get-CimInstance -query ""Select * From __Namespace Where Name='CCM'"" -Namespace ""root"" | Remove-CimInstance -Verbose -Confirm:$false"); });Перепробовал уже сотню разных вариантов, и с "\" и двойные кавычки и одинарные, пока проект запускается в Visual Studio всё работает, как только запускаю exe в живой среде windows - ошибка, powershell не понимает эту строку.
Добрый день, подскажите пожалуйста, может кто сталкивался с такой проблемой кавычек в связке powershell+c#:
мне нужно запустить powershell и в нём выполнить следующую команду
СкопированоGet-CimInstance -query "Select * From __Namespace Where Name='CCM'" -Namespace "root" | Remove-CimInstance -Verbose -Confirm:$false
вот у меня есть метод, который создаёт процесс powershell'a
void POWERSHELL(string arguments)
{
buffer = "";
Process POWERSHELL = new Process();
POWERSHELL.StartInfo.FileName = "powershell";
POWERSHELL.StartInfo.Arguments = arguments;
POWERSHELL.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
POWERSHELL.StartInfo.RedirectStandardOutput = true;
POWERSHELL.StartInfo.UseShellExecute = false;
POWERSHELL.StartInfo.CreateNoWindow = true;
POWERSHELL.Start();
buffer = POWERSHELL.StandardOutput.ReadToEnd();
POWERSHELL.WaitForExit();
POWERSHELL.Close();
}
вот я его вызываю в программе
await Task.Run(() => { POWERSHELL(@"Get-CimInstance -query ""Select * From __Namespace Where Name='CCM'"" -Namespace ""root"" | Remove-CimInstance -Verbose -Confirm:$false"); });
Перепробовал уже сотню разных вариантов, и с "\" и двойные кавычки и одинарные, пока проект запускается в Visual Studio всё работает, как только запускаю exe в живой среде windows - ошибка, powershell не понимает эту строку.
Цитата: Никита от 05.08.2021, 20:03Путём долгих опытов, оказалось powershell не может распознать двойные кавычки в строке, пришлось заменить их все на одинарные. Если будете сталкиваться с этой проблемой, могу порекомендовать использовать этот способ, других решений, к сожалению, я не нашёл.
Путём долгих опытов, оказалось powershell не может распознать двойные кавычки в строке, пришлось заменить их все на одинарные. Если будете сталкиваться с этой проблемой, могу порекомендовать использовать этот способ, других решений, к сожалению, я не нашёл.