PowerShell 是管理 Azure 的最好方式,由于咱们可使用脚本把不少的工做自动化。好比把 Azure 上的虚拟机关机,并在适当的时间把它开机,这样咱们就能节省一些开支,固然咱们同时也为减小二氧化碳的排放作出了贡献!json
PowerShell 的 Azure 模块中为咱们提供了不一样的 API, 早期的叫 ASM(Azure Service Manager)。随着 Azure 的发展变化,又出现了一套新的 API 叫 ARM(Azure Resource Management)。咱们这里仅介绍如何使用 ARM 中的 API 实现自动登陆而且操做 Azure 上的资源。session
使用 PowerShell 自动登陆 Azure 的大致思路是这样的:首先使用登陆命令在交互式界面下进行登陆操做,而后使用 Save-AzureRmProfile 命令把你的登陆认证信息保存到本地的文件中。之后在脚本中进行自动登陆时,只要使用这个本地文件就能够了。下面让咱们来看看具体的操做过程。加密
在登陆前先检查一下当前的登陆状态,咱们经过查询 Resource Group 来间接的进行。
执行命令:Get-AzureRmResourceGroupspa
由于没有登陆,查询失败并提示咱们进行登陆。日志
执行命令:Login-AzureRmAccount
经过弹出的对话框登陆:code
登陆成功后会显示你的帐户信息:blog
好了如今让咱们再来执行一次 Get-AzureRmResourceGroup 命令。资源
以前的错误信息已经没有了,输出的结果为 Resource Group 的列表。虚拟机
Save-AzureRmProfile 命令可以把当前 session 的登陆信息保存到文件中,在其余的 session 中就可使用这个文件进行自动登陆。
执行命令:Save-AzureRmProfile -Path “d:\test\myprofile.json”
myprofile.json 是一个普通的文本文件,只有认证信息被加密了,其它的信息都是可读的。string
注意,必定要保护好生成的 myprofile.json 文件,若是泄露出去和别人拿到你的帐户密码是同样的。
Select-AzureRmProfile 命令从文件中载入用户的登陆信息而且设置 Azure 的执行上下文。
Select-AzureRmProfile –Path “d:\test\myprofile.json”
执行结果和咱们运行 Login-AzureRmAccount 命令是同样的:
咱们经过重启 Azure 上的一台虚机来完成一个完整的例子:
$profile = "your profile path" $resourceGroupName = "your resource group name" $vmName = "your vm name" $logfile = "log file name" # 自定义日志方法 Function LogWrite { Param ([string]$logstring) $now = Get-Date $logcontent = $now.ToShortDateString() + " " + $now.ToShortTimeString() + ": " + $logstring Add-Content $logfile -value $logcontent } LogWrite("before Select-AzureRmProfile.") Select-AzureRmProfile -Path $profile LogWrite("after Select-AzureRmProfile.") LogWrite("before Restart-AzureRmVM.") Restart-AzureRmVM -ResourceGroupName $resourceGroupName -Name $vmName LogWrite("after Restart-AzureRmVM.")
好了,一个简单的自动化工做就完成了!