gpt4 book ai didi

powershell - 运行Azure虚拟机启动任务的正确方法是什么

转载 作者:行者123 更新时间:2023-12-02 03:25:30 25 4
gpt4 key购买 nike

我们正在Azure虚拟机中运行节点应用程序,同时我们还希望在Azure自动化的帮助下(或通过管理门户)在某个特定时间重新启动VM。

但是VM重启后如何重启节点应用呢?

我们尝试了很多方法来实现这一目标,包括添加任务计划程序、向注册表项添加命令 (LocalMachine\..\Run)、使用 VM 的自定义脚本扩展...

以上均失败。我们想要的是VM重启后,节点应用能够自动启动。如果我们随后使用预定义帐户远程到虚拟机,则上述某些方法可以起作用。然而,这不是风景,我们只想一开始就远程一次,而不是每次重启。

那么,实现此目的的正确方法是什么,在虚拟机自动重新启动后启动进程或执行命令而无需手动登录?

最佳答案

我已经尝试了很多方法来实现这个目标,从我的角度来看, Task Scheduler 是完成此类工作的最佳选择。

关键点是启动进程后永远不要让 Windows 命令提示符存在。例如,一开始我们使用 forever启动节点应用程序。由于forever命令返回很快,这意味着所有命令执行完毕。因此,Windows 命令提示符进程以及节点进程将被终止。

我们所做的是,我们使用另一种方式来永久启动( forever-monitor ),这是在代码中使用的。这样,我们就可以简单地使用node命令来启动这个永久启动文件。由于 node 命令会阻止命令提示符,因此节点应用程序将不再被终止。

<小时/>

另一种选择是使用Azure Automation远程运行启动脚本。

完整的脚本可以在 here 找到,关键点是:

$PSCommandResult = Invoke-command -AsJob -ConnectionUri $Using:Uri.AbsoluteUri -credential $Using:mycreds -ScriptBlock { Invoke-Expression "D:\start.ps1" }

start.ps1脚本中,我们也不应该退出执行,我们可以使用Start-Sleep命令来实现这一点。该脚本可以是:

forever start --sourceDir D: start.js
Start-Sleep -s 86400

希望这两种方法可以帮助到您。

关于powershell - 运行Azure虚拟机启动任务的正确方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30574146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com