PowerShell 是管理 Azure 的最好方式,因為我們可以使用腳本把很多的工作自動化。比如把 Azure 上的虛擬機關機,并在適當的時間把它開機,這樣我們就能節省一些開支,當然我們同時也為減少二氧化碳的排放做出了貢獻!
PowerShell 的 Azure 模塊中為我們提供了不同的 API, 早期的叫 ASM(Azure Service Manager)。隨著 Azure 的發展變化,又出現了一套新的 API 叫 ARM(Azure Resource Management)。我們這里僅介紹如何使用 ARM 中的 API 實現自動登錄并且操作 Azure 上的資源。
使用 PowerShell 自動登錄 Azure 的大體思路是這樣的:首先使用登錄命令在交互式界面下進行登錄操作,然后使用 Save-AzureRmProfile 命令把你的登錄認證信息保存到本地的文件中。以后在腳本中進行自動登錄時,只要使用這個本地文件就可以了。下面讓我們來看看具體的操作過程。
使用 Login-AzureRmAccount 命令登錄
在登錄前先檢查一下當前的登錄狀態,我們通過查詢 Resource Group 來間接的進行。
執行命令:Get-AzureRmResourceGroup
因為沒有登錄,查詢失敗并提示我們進行登錄。
執行命令:Login-AzureRmAccount
通過彈出的對話框登錄:
登錄成功后會顯示你的賬戶信息:
好了現在讓我們再來執行一次 Get-AzureRmResourceGroup 命令。
之前的錯誤信息已經沒有了,輸出的結果為 Resource Group 的列表。
把登錄信息保存到文件中
Save-AzureRmProfile 命令能夠把當前 session 的登錄信息保存到文件中,在其他的 session 中就可以使用這個文件進行自動登錄。
執行命令:Save-AzureRmProfile -Path “d: estmyprofile.json”
myprofile.json 是一個普通的文本文件,只有認證信息被加密了,其它的信息都是可讀的。
注意,一定要保護好生成的 myprofile.json 文件,如果泄露出去和別人拿到你的賬戶密碼是一樣的。
自動登錄 Azure
Select-AzureRmProfile 命令從文件中載入用戶的登錄信息并且設置 Azure 的執行上下文。
Select-AzureRmProfile –Path “d: estmyprofile.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.")
好了,一個簡單的自動化工作就完成了!
原文地址:https://www.cnblogs.com/sparkdev/p/6358266.html