0

我想在 c# 中使用 Stop-Process 命令(PowerShell 的)。我知道如何使用“Get-Process”命令,但在停止进程的情况下,我们必须提供参数(进程名称)。就我而言,我在文本框中从用户那里获取参数。

   private void button2_Click(object sender, EventArgs e)
    {
        PowerShell ps = PowerShell.Create();

        ps.AddCommand("Stop-Process -Name " + (textBox1.Text).ToString());


        ps.Invoke();
    }  
4

2 回答 2

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”,他们可能会因为系统变得不稳定而度过糟糕的一天。

于 2013-11-09T23:55:58.893 回答
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 属性已经是一个字符串

于 2013-11-09T20:37:04.840 回答