自动登录 Azure VM

自动登录 Azure VM

我想使用 Azure VM 自动化一些流程。我想自动启动它,运行某些程序,然后关闭它并取消配置,直到下次计划启动。

我可以在启动时使用任务计划程序并设置一些在登录前启动时运行的程序。这在我编写的控制台应用程序中运行良好,该应用程序只执行一些操作并写入数据库,而无需尝试打开窗口。它不适用于批处理文件,这是我最初想要的 - 使用批处理文件运行 PowerShell 脚本,该脚本运行我的应用程序,然后使用返回代码来决定是否关闭和取消配置。明显的区别是控制台窗口,所以我怀疑此时没有 UI,cmd 正在等待它。

这会给下一个任务带来问题 - 定期使用屏幕抓取软件在远程网站上执行操作,提取记录并将其存储在本地数据库中。远程服务没有 API。如果没有 UI,我就无法以牵线木偶模式启动 Firefox 并进行记录更新。

我尝试按照说明添加注册表项这里并设置登录后启动的任务,但该任务从未运行过,尽管我不能确定它看起来就像远程桌面会话连接后出现的 UI 一样。

我见过一种解决方案,它在本地笔记本电脑上使用 Powershell 来编写虚拟机的启动脚本并建立远程桌面连接,但如果我要让笔记本电脑继续运行来执行此操作,那么笔记本电脑可能就会做所有事情,而这并不是我想要的 - 这就是尝试将其放入 Azure 的全部意义所在。

那么,有没有人做过类似的事情并且知道如何让 Azure VM 完全进入登录桌面而无需任何外部交互?

答案1

如果你正在使用ARM 模板部署你可以使用以下操作系统简介用于配置 Windows 机器自动登录

"osProfile": {
        "computerName": "[parameters('vmName')]",
        "adminUsername": "[parameters('adminUsername')]",
        "adminPassword": "[parameters('adminPassword')]",
        "WindowsConfiguration": {
            "additionalUnattendContent": [
              {
                "passName": "oobesystem",
                "componentName": "Microsoft-Windows-Shell-Setup",
                "settingName": "AutoLogon",
                "content": "[concat('<AutoLogon><Password><Value>', parameters('adminPassword'), '</Value><PlainText>true</PlainText></Password><Enabled>true</Enabled><Username>', parameters('adminUsername'), '</Username></AutoLogon>')]"
              }
            ]
        }
      }

答案2

那么,有没有人做过类似的事情并且知道如何让 Azure VM 完全进入登录桌面而无需任何外部交互?

您可以使用以下 cmdlet 来登录您的 VM,无需任何交互。

echo "Connecting to 23.98.218.139"
$Server="23.98.218.139"
$User="user"
$Password="********"
cmdkey /generic:TERMSRV/$Server /user:$User /pass:$Password
mstsc /v:$Server

将脚本保存为 Power Shell 脚本并根据需要执行。更多信息请参阅此关联

注意:首次登录虚拟机时,您应该信任您的 PC。

相关内容