PowerShell 是管理 Azure 的最好方式之一,经过使用 PowerShell 脚本能够把不少的工做自动化。好比对于 Azure 上的虚拟机,能够设置定时关机操做,并在适当的时间把它开机,这样就能减小虚拟机的运行时间,同时也能为节能减排作出贡献。html
PowerShell 的 Azure 模块中为咱们提供了不一样的 API, 早期的 API 叫 ASM(Azure Service Manager)。随着 Azure 的发展变化,又出现了一套新的 API 叫 ARM(Azure Resource Management)。在这里,咱们仅介绍如何使用 ARM中 的 API 实现 Azure 上的自动登陆并操做资源。json
使用 PowerShell 自动登陆 Azure 的大致思路是这样的:首先使用登陆命令在交互式界面下进行登陆操做,而后使用 Save-AzureRmProfile 命令把登陆认证信息保存到本地的文件中。之后在脚本中设置自动登陆时,只需使用这个本地文件就能够了。session
下面来看看具体的操做过程。加密
在登陆前须要先检查一下当前的登陆状态,能够经过查询 resource group 来进行间接检查。spa
执行命令:Get-AzureRmResourceGroup日志
若是当前没有登陆,则会查询失败并提示咱们须要登陆。code
执行命令:Login-AzureRmAccounthtm
经过弹出的对话框登陆:blog
登陆成功后会显示帐户信息:ip
而后再执行一次 Get-AzureRmResourceGroup 命令。
好了,以前的错误信息已经没有了,输出的结果为 Resource Group 的列表。
到这里,就已经登陆成功了。
Save-AzureRmProfile 命令可以把当前 session 的登陆信息保存到文件中,这样其它的 session 也可使用这个文件进行自动登陆了。
执行命令:Save-AzureRmProfile -Path “d:\test\myprofile.json”
myprofile.json 是一个普通的文本文件,文件中只有认证信息被加密了,其它的信息都是可读的。
注意,必定要保护好生成的 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.")
好了,一个简单的自动化重启工做就完成了!