我如何在Azure虚拟机中自动化并运行安装后命令?

我需要部署Azure主机,并在加载后根据预定义的脚本进行configuration。

是否有任何示例,指导或教程,如何修改Azure虚拟机一旦部署实例…以编程方式(通过PowerShell,C#或任何其他手段)?

到目前为止,我已经通过命令行部署命令,并没有看到我可以上传或以其他方式启动部署后安装命令的方式。

我不完全确定你在哪里陷入困境,或者你正在努力完成什么,但是无论如何,我会给它一个镜头。

远程桌面

只是为了踢,让我们开始远程进入虚拟机。 我使用Azure门户开启了一个虚拟机。 门户网站要求指定用户名和密码。 显然,最简单的远程访问方法是在select虚拟机实例后使用“连接”button:

在这里输入图像说明

从那里你可以input你的凭据,login到虚拟机,并打开PowerShell。

这是照顾它的一个坏方法,但它是最直接的。

PowerShell远程处理

启动一个远程的PowerShell会话可能会更快一点,并且涉及更less的GUI。 对于快速的一行,请试试这个:

Enter-PSSession -ConnectionUri (Get-AzureWinRMUri) -SessionOption (New-PSSessionOption -SkipCACheck) -Credential (Get-Credential) 

系统会提示您input服务名称(在我的情况下是rtannerf)和凭证。 我select忽略自签名证书而不是导入它。

你也可以使用Invoke-Command

  Invoke-Command –ConnectionUri $uri –Credential $cred –ScriptBlock { "do u liek mah hat!?" | Out-File C:\hello.txt } 

更多关于这里 。 您可以对此进行扩展,并在部署完成后使用PowerShell来部署您的虚拟机并对其运行脚本。 可能想看看Azure Management cmdlet参考页面

这种方法对我来说似乎有些笨拙,但是如果你只需要启动几个虚拟机,那么对你来说可能会很好。

通过图像进行部署

如果您需要比Invoke-Command适合的更重的触摸,则可能需要查看部署映像。 短版本是您将准备一个图像的方式,你就像任何其他的Windows图像,上传到Azure的存储帐户,并使用pipe理控制台添加VHD到您的图像。 这里有一个简短的指南。

这听起来像这将是你想要解决你的问题的方式。 你可以使用启动脚本,而不是让机器进入你想要的状态,但最好切换到追逐模式,并简单地部署一个完全按你的需要configuration的映像。

在部署虚拟机时,可以指定自定义数据 :在configuration期间注入到虚拟机的数据最多可达64K( 此处为 API详细信息)。 您可以在<CustomData>元素中以base-64编码格式指定数据。 这些数据将出现在您的虚拟机中,位于:

  • %SYSTEMDRIVE%\AzureData\CustomData.bin (Windows)
  • /var/lib/waagent/CustomData (Linux)

目前只能通过REST API直接使用,但通过跨平台CLI即将提供。 你可以在这里看到这个function的拉取请求。

另一种方法,使用IaaSpipe理工作室 ,它会生成命令行,所以你可以通过PowerShell连接点击一下。 (并生成它的命令行)商业,但也许免费试用就够了。