脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - PowerShell - Azure 基础:用 PowerShell 自动登录

Azure 基础:用 PowerShell 自动登录

2020-07-09 09:07sparkdev PowerShell

PowerShell 是管理 Azure 的最好方式,因为我们可以使用脚本把很多的工作自动化。比如把 Azure 上的虚拟机关机,并在适当的时间把它开机,这样我们就能节省一些开支,当然我们同时也为减少二氧化碳的排放做出了贡献!

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

Azure 基础:用 PowerShell 自动登录

因为没有登录,查询失败并提示我们进行登录。

执行命令:Login-AzureRmAccount
通过弹出的对话框登录:

Azure 基础:用 PowerShell 自动登录

登录成功后会显示你的账户信息:

Azure 基础:用 PowerShell 自动登录

好了现在让我们再来执行一次 Get-AzureRmResourceGroup 命令。

Azure 基础:用 PowerShell 自动登录

之前的错误信息已经没有了,输出的结果为 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 基础:用 PowerShell 自动登录

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

我们通过重启 Azure 上的一台虚机来完成一个完整的例子:

 
  1. $profile = "your profile path" 
  2. $resourceGroupName = "your resource group name" 
  3. $vmName = "your vm name" 
  4. $logfile = "log file name" 
  5. # 自定义日志方法 
  6. Function LogWrite 
  7.     Param ([string]$logstring) 
  8.     $now = Get-Date 
  9.     $logcontent = $now.ToShortDateString() + " " + $now.ToShortTimeString() + ": " + $logstring     
  10.     Add-Content $logfile -value $logcontent 
  11.  
  12. LogWrite("before Select-AzureRmProfile."
  13. Select-AzureRmProfile -Path $profile 
  14. LogWrite("after Select-AzureRmProfile."
  15.  
  16. LogWrite("before Restart-AzureRmVM."
  17. Restart-AzureRmVM -ResourceGroupName $resourceGroupName -Name $vmName 
  18. LogWrite("after Restart-AzureRmVM."
 

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

原文地址:https://www.cnblogs.com/sparkdev/p/6358266.html

延伸 · 阅读

精彩推荐