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

好了,一個簡單的自動化工做就完成了!

相關文章
相關標籤/搜索