了解一下Microsoft PowerShell脚本和命令
与传统的脚本语言(如JScript和VBScript)相比,使用PowerShell脚本和命令在Windows操作系统中快速执行任务提供许多好处。虽然PowerShell脚本编写最初是一种有效管理Windows操作系统的方法,但是Microsoft已扩展PowerShell的功能,以自动化一系列其他任务和系统,包括Microsoft云服务Azure。
Azure PowerShell是一个强大的命令行工具,使用脚本和cmdlet来管理虚拟机(VM)中的任务。在本文Varidata将针对一些有用PowerShell cmdlet进行阐述,将可用于与Azure资源进行交互。
如果需要使用PowerShell创建Azure虚拟机以供生产或开发使用,则可以使用New-AzVM cmdlet,可以指定参数,例如VHD的位置、内存、处理器等。若要使用默认配置在Azure中快速创建虚拟机,可执行以下PowerShell命令:
New-AzVM -ResourceGroupName “myResourceGroup -Name “myVM”
尽管此命令在“ -ResourceGroupName”参数中指定的资源组中快速创建虚拟机,但下一条命令将从托管映像在Azure中创建虚拟机。
New-AzVM -ResourceGroupName “myResourceGroup” -Location “West-US” -Name “myVM” -ImageName “myImageDefinition”
Azure虚拟机中的活动报告对于提供有关已部署和当前正在运行的VM数量的详细信息很有用。Microsoft提供Get-AzVM PowerShell cmdlet,可用于从Azure订阅和/或Azure资源组报告虚拟机。
若要从Azure资源组获取所有虚拟机,请执行以下PowerShell命令:
Get-AzVM -ResourceGroupName “myResourceGroup”
要将输出导出到CSV文件,请添加Export-CSV cmdlet,如下所示:
Get-AzVM -ResourceGroupName “myResourceGroup” | Export-CSV C:TempAllAzureVMs.CSV -NoTypeInfo
在Get-AzVM中,还可以指定在Azure中查询虚拟机时希望报告的属性。例如,以下PowerShell命令仅收集在虚拟机上运行的操作系统的类型:
Get-AzVM | Select Name,@{Name=”OSType”; Expression={$_.StorageProfile.OSDisk.OSType}}
如果希望列出Azure订阅中的所有虚拟机,请在提升的PowerShell窗口中执行“ Get-AzVM”命令。如果要从文本文件中列出的资源组中列出虚拟机,则可以使用以下PowerShell脚本:
$ResGroups = “C:TempResGroups.TXT”
$ReportFile = “C:TempAllVMsInAzure.CSV”
$STR = “VM Name, Resource Group, Location, Status Code”
Add-Content $ReportFile $STR
Foreach ($ResGroup in Get-Content $ResGroups)
{
$allVMsInReg = Get-AzureRMVM -ResourceGroupName “$ResGroup”
ForEach ($AllVMs in $AllVMsInRes)
{
$VMLocation = $AllVMs.Location
$VMName = $AllVMs.Name
$VMStatus = $AllVMs.StatusCode
$STR = $VMName+”,”+$ResGroup+”,”+$VMLocation+”,”+$VMStatus
Add-Content $ReportFile $STR
}
}
完成执行该脚本后,将生成一个报告文件,其中包含虚拟机的名称,虚拟机的资源组名称,虚拟机的Azure位置以及指示虚拟机总体状态的状态代码。
您可能会不时地停止、启动和重新启动Azure虚拟机,以降低计费成本。例如,如果不使用开发虚拟机,则可能不想运行它们。同样,如果您已将临时虚拟机分配给第三方供应商,则可能需要尽快将其删除。若要停止Azure虚拟机,可以使用Stop-AzVM PowerShell cmdlet,如以下PowerShell命令所示:
Stop-AzVM -ResourceGroupName “myResourceGroup” -Name “myVM”
下一个PowerShell脚本可用于停止文本文件中指定的特定虚拟机。假设该文本文件包含要停止的虚拟机列表。创建包含要停止的虚拟机的文本文件后,运行以下PowerShell脚本:
$VMFile = “C:TempAllVMsToStop.TXT”
Foreach ($ThisVM in Get-Content $VMFile)
{
Stop-AzureRMVM -Name $ThisVM
}
启动Azure虚拟机类似于停止Azure虚拟机。但是,您当然需要使用Start-AzureRMVM PowerShell cmdlet代替Stop-AzureRMVM cmdlet,如以下命令所示:
Start-AzVM -ResourceGroupName “myResourceGroup” -Name “myVM”
如果您遇到Azure虚拟机的任何问题并且无法通过Azure管理门户进行控制,或者在访问虚拟机时遇到任何问题,一种解决方案是使用以下PowerShell命令重新启动它:
Restart-AzVM -ResourceGroupName “myResourceGroup” -Name “myVM”