我在 Azure 中的 Windows Server 上有一个 dotnet 应用程序。我添加了计划任务来重新启动 Windows。我使用了下面包含的代码。 Windows 关闭但未在计划时间重新启动。当我在普通 Windows 计算机上尝试相同的代码部分时,它运行顺利。你能帮我解决这个问题吗?
ProcessStartInfo startInfo = new("shutdown", "/r")
{
WindowStyle = ProcessWindowStyle.Hidden,
ErrorDialog = false
};
我想在重启后重新启动Windows服务器。我是否应该更改 Azure 门户中的某些设置以自动重新启动它?
关闭命令中的/t开关需要在重新启动或关闭之前有以秒为单位的时间延迟。但是,在您的代码中,使用 /t 开关时没有指定任何时间延迟,这可能是服务器立即关闭但不重新启动的原因。
试试这个
ProcessStartInfo startInfo = new ProcessStartInfo("shutdown", "/r /t 60") {
WindowStyle = ProcessWindowStyle.Hidden,
ErrorDialog = false
};
这将在延迟 60 秒后重新启动服务器
更新 如果 Royal TSX 中的连接断开并且在运行重新启动代码后无法再次启动,则可能是因为重新启动过程正在终止负责处理远程桌面连接的应用程序或服务。我们可以尝试注销服务器然后重新启动它,我相信这不会中断远程连接并且可以重新启动。
尝试这个更新的代码
ProcessStartInfo logoffInfo = new ProcessStartInfo("logoff", "/f")
{
WindowStyle = ProcessWindowStyle.Hidden,
ErrorDialog = false
};
Process.Start(logoffInfo).WaitForExit();
ProcessStartInfo restartInfo = new ProcessStartInfo("shutdown", "/r /t 60")
{
WindowStyle = ProcessWindowStyle.Hidden,
ErrorDialog = false
};
Process.Start(restartInfo);
`
终于找到答案了。
ProcessStartInfo startInfo = new("shutdown", "/r")
{
WindowStyle = ProcessWindowStyle.Hidden,
ErrorDialog = false
};
此代码部分仍然可以重新启动,但它本身还不够。 azure VM需要登录才能运行我的bat文件。
我使用了这个自动登录程序。它的作用就像魅力一样。
https://learn.microsoft.com/en-us/sysinternals/downloads/autologon
如果您需要在启动时运行cmd文件。首先创建一个bat文件并将命令行提示符放入其中。
然后您的程序将在自动重启后启动。