Azure 基础:用 PowerShell 自动登陆

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 命令把你的登陆认证信息保存到本地的文件中。之后在脚本中进行自动登陆时,只要使用这个本地文件就能够了。下面让咱们来看看具体的操做过程。加密

使用 Login-AzureRmAccount 命令登陆

在登陆前先检查一下当前的登陆状态,咱们经过查询 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 文件,若是泄露出去和别人拿到你的帐户密码是同样的。

自动登陆 Azure

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.")

好了,一个简单的自动化工做就完成了!

相关文章
相关标签/搜索