我想在c#中使用Stop-Process命令(PowerShell)。我知道如何使用“Get-Process”命令,但是在stop-process的情况下我们必须给出参数(进程名称)。在我的情况下,我在文本框中从用户那里获取参数。
private void button2_Click(object sender, EventArgs e)
{
PowerShell ps = PowerShell.Create();
ps.AddCommand("Stop-Process -Name " + (textBox1.Text).ToString());
ps.Invoke();
}
答案 0 :(得分:2)
您必须单独添加参数:
private void button2_Click(object sender, EventArgs e)
{
PowerShell ps = PowerShell.Create();
ps.AddCommand("Stop-Process");
ps.AddParameter("Name", textBox1.Text);
ps.Invoke();
}
此外,您不必执行textBox1.Text.ToString(),因为text属性已经是字符串
答案 1 :(得分:2)
试试这个:
ps.AddCommand("Stop-Process").AddParameter("Name", textBox1.Text);
如果您使用AddScript,可以使用您的原始方法:
ps.AddScript("Stop-Process -Name " + textBox1.Text); # Not recommended
但是我不推荐这种方法,因为它会打开脚本以注入类似于SQL注入的攻击。如果有人在文本框中键入内容:“notepad; Remove-Item C:\ -r -force”? : - )
尽管如此,即使采用第一种方法,您也应该检查用户输入,以确保人们在可以关闭的过程中受到一些限制。如果他们输入“svchost”,他们可能会有糟糕的一天,因为他们的系统变得不稳定。