我正在研究一个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
不能正常工作。
很抱歉的描述。 谢谢
答案 0 :(得分:2)
尝试使用+----------+----+---+
|max(score)|name|id |
+----------+----+---+
|3.5 |n1 |77 |
|1.2 |n2 |45 |
|1.2 |n2 |1 |
|4.2 |n3 |34 |
+----------+----+---+
如果这不起作用,我建议您检出PsTools套件。他们有一些命令行工具,PsShutdown可以帮助您。