我是一名开发人员,使用 Azure VM 作为我的主要开发平台。为了给公司省点钱,我本想在周末等时间关闭它,但我经常会打开很多程序等,我想继续运行它们。我尝试打开休眠模式,以为我可以休眠然后通过门户(或脚本)关闭,但我得到了:
C:\Windows\system32>powercfg /hibernate 开启
休眠失败,出现以下错误:不支持该请求。
以下项目阻止此系统进入休眠状态。系统固件不支持休眠。
有没有什么方法可以在 Azure VM 上实现我想做的事情(保存状态但关闭电源)?
答案1
Azure 中 VM 的 2 种可能停止状态:
已停止(虚拟机内部关闭,已计费)
已停止-已解除分配(门户关闭,无账单)
微软正在努力澄清这一点。
答案2
目前不支持休眠。您可以启动或停止虚拟机,这基本上是 Azure 中的两种可能状态。为了省钱,您必须创建一个自动化(powershell)脚本来根据特定时间表关闭或启动虚拟机,但这不会保存您的用户会话。
答案3
Azure VM 只有 2 种状态(即启动和停止),但您可以在创建 VM 期间使用扩展机制对此进行调整。
我们可以按照以下步骤进行休眠。
创建一个独立的应用程序,它将执行以下操作。
- 读取系统的“最近的文件”。
- 扫描所有正在运行的进程。
- 现在根据进程名称和最近目录中最近打开的文件获取它们的绝对路径并存储到某个临时文件中。
- 确保每次执行时创建的文件都会覆盖旧文件。
- 如果文件存在,则在启动期间,该应用程序应该打开所有列出的文件并启动进程。
现在,将上面创建的可执行文件存储到某些公共访问的存储帐户中。
编写一个 power shell 脚本,您可以在其中访问上面提到的存储帐户,它会将第 1 步创建的可执行应用程序下载到该 VM 中,该 VM 将继续扫描和读取并将所有最近打开的应用程序存储到一个临时文件中,并且在启动期间它也应该打开。
为了将可执行文件下载到相应的 VM 中,您可以在创建 VM 时使用“扩展”机制,并在其中附加 power shell 脚本。
因此从下一次开始,在释放您的 VM 后,无论何时再次启动旧 VM,它都会读取列出所有文件名和进程名的临时文件并打开该文件。
这样,你就可以实现你的冬眠过程。
希望这些步骤清楚,否则请发布更新,以便我提供更多指导。