使用 PowerShell 自动登陆Azure

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

下面来看看具体的操做过程。加密

1、使用 Login-AzureRmAccount 命令登陆

在登陆前须要先检查一下当前的登陆状态,能够经过查询 resource group 来进行间接检查。spa

执行命令:Get-AzureRmResourceGroup日志

image

若是当前没有登陆,则会查询失败并提示咱们须要登陆。code

执行命令:Login-AzureRmAccounthtm

经过弹出的对话框登陆:blog

clip_image002

登陆成功后会显示帐户信息:ip

clip_image003

而后再执行一次 Get-AzureRmResourceGroup 命令。

clip_image005

好了,以前的错误信息已经没有了,输出的结果为 Resource Group 的列表。

到这里,就已经登陆成功了。


 2、将登陆信息保存到文件中

Save-AzureRmProfile 命令可以把当前 session 的登陆信息保存到文件中,这样其它的 session 也可使用这个文件进行自动登陆了。

执行命令:Save-AzureRmProfile -Path “d:\test\myprofile.json”

myprofile.json 是一个普通的文本文件,文件中只有认证信息被加密了,其它的信息都是可读的。

注意,必定要保护好生成的 myprofile.json 文件,若是泄露出去和别人拿到你的帐户密码是同样的。


 3、自动登陆 Azure

经过 Select-AzureRmProfile 命令,能够从文件中载入用户的登陆信息而且设置 Azure 的执行上下文。

执行命令:Select-AzureRmProfile –Path “d:\test\myprofile.json”

其执行结果和运行 Login-AzureRmAccount 命令是同样的:

clip_image006


 一个自动重启虚拟机的例子

如下是重启 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.")

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

相关文章
相关标签/搜索