通过c#程序在命令提示符下使用其IP地址关闭另一个系统吗?

时间:2018-07-26 05:33:56

标签: c# cmd system.diagnostics

我正在研究一个c#程序,该程序将从记事本文件中提取IP地址,对于每个IP地址,如果系统已打开电源,它将在命令提示符下运行命令,以远程将其关闭。我已经编写了此代码,该代码当前正在获取系统的IP地址(当前不在记事本文件中),检查它的打开还是关闭状态,并根据要求远程关闭它。

它正在使用ping请求,但这很好,因为此处没有系统拒绝ping请求。我要读取的是IP地址,如果已打开,请在用户说“是”时将其关闭。 [我已经使用“ shutdown \ s”立即关闭系统“]这是我的代码。

        Console.WriteLine("1-Check PC Status\n2-Exit");
        input = Int32.Parse(Console.ReadLine());
        switch (input)
        {
                case 1:
                    string LocalIP = string.Empty;
                    var host = Dns.GetHostEntry(Dns.GetHostName());
                    foreach (var ip in host.AddressList)
                    {
                        if (ip.AddressFamily == AddressFamily.InterNetwork)
                        {
                            LocalIP = ip.ToString();
                        }
                    }

                    var PingRequest = new Ping();
                    var PingReply = PingRequest.Send(LocalIP);
                    if (PingReply.Status == IPStatus.Success)
                    {
                        Console.WriteLine("{0, -20} {1, 5}", "IP Address", "Status");
                        Console.WriteLine("{0, -20} {1, 5}", LocalIP, "On");
                        Console.WriteLine("\nShutdown the system (y/n)?");
                        string shutdownChoice;
                        shutdownChoice = Console.ReadLine();
                        if(shutdownChoice == "y" || shutdownChoice == "Y")
                        {
                            Process cmdProcess = new Process();
                            cmdProcess.StartInfo.FileName = "cmd.exe";
                            cmdProcess.StartInfo.RedirectStandardInput = true;
                            cmdProcess.StartInfo.RedirectStandardOutput = true;
                            cmdProcess.StartInfo.CreateNoWindow = true;
                            cmdProcess.StartInfo.UseShellExecute = false;
                            cmdProcess.Start();

                            cmdProcess.StandardInput.WriteLine("shutdown /s");
                            cmdProcess.StandardInput.Flush();
                            cmdProcess.StandardInput.Close();
                            cmdProcess.WaitForExit();
                        }
                        else
                        {
                            input = 2;
                        }
                    }
                    else
                    {
                        Console.WriteLine("{0, -20} {1, 5}", LocalIP, "Off");
                    }
                    break;
                case 2:
                    input = 2;
                    break;
                default:
                    Console.WriteLine("Incorrect input");
                    break;
            }

我知道此命令shutdown \i,但这将打开一个对话框以输入IP地址,但是我想通过控制台直接将其关闭,而没有任何其他对话框或窗口。 shutdown \m //computername不能正常工作。

很抱歉的描述。 谢谢

1 个答案:

答案 0 :(得分:2)

尝试使用+----------+----+---+ |max(score)|name|id | +----------+----+---+ |3.5 |n1 |77 | |1.2 |n2 |45 | |1.2 |n2 |1 | |4.2 |n3 |34 | +----------+----+---+

如果这不起作用,我建议您检出PsTools套件。他们有一些命令行工具,PsShutdown可以帮助您。