[Azure]Azure Powershell导出虚拟机及对应磁盘
来源:互联网 发布:java流媒体框架 编辑:程序博客网 时间:2024/04/28 17:46
这里发两个脚本,用于获取某个账号下的所有订阅中的虚拟机的磁盘信息,分ASM和ARM两部分。
ASM版本:
$Cred = New-Object System.Management.Automation.PSCredential("XXXXXXXXX@XXXXXXXXX.partner.onmschina.cn",(ConvertTo-SecureString "XXXXXXXXX" -AsPlainText -Force));$AzureRMCred = Get-Credential -Credential $Cred;Add-AzureAccount -Environment AzureChinaCloud -Credential $AzureRMCred;Function WriteToXMLOutput($str){ $OutputfilePath = $PSScriptRoot + "\VM_and_Disks.xml"; $str | Out-File $OutputfilePath -Append;}Function BuildLevelSpace($level){ $levelSpace = " "; $result = ""; for ($i = 1; $i -lt $level; $i++) { $result += $levelSpace; } return $result;}Function BuildSubscriptionsHead(){ return (BuildLevelSpace 1) + "<subscriptions>";}Function BuildSubscriptionsEnd(){ return (BuildLevelSpace 1) + "</subscriptions>";}Function BuildSubscriptionHead($subscriptionName){ return (BuildLevelSpace 2) + "<subscription name='$subscriptionName'>";}Function BuildSubscriptionEnd($subscriptionName){ return (BuildLevelSpace 2) + "</subscription>";}Function BuildVirtualMachinesHead(){ return (BuildLevelSpace 3) + "<virtualmachines>";}Function BuildVirtualMachinesEnd(){ return (BuildLevelSpace 3) + "</virtualmachines>";}Function BuildVirtualMachineHead($virtualmachineName, $OSType, $Size){ return (BuildLevelSpace 4) + "<virtualmachine name='$virtualmachineName' OS='$OSType' size='$Size'>";}Function BuildVirtualMachineEnd(){ return (BuildLevelSpace 4) + "</virtualmachine>";}Function BuildOutputXml(){ $subscriptions = Get-AzureSubscription; WriteToXMLOutput ((BuildLevelSpace 1) + "<?xml version='1.0'?>"); WriteToXMLOutput (BuildSubscriptionsHead); # loop all the subscriptions foreach($subscription in $subscriptions) { $subscriptionName = $subscription.SubscriptionName; Select-AzureSubscription -SubscriptionName $subscriptionName; WriteToXMLOutput (BuildSubscriptionHead $subscriptionName); $vms = Get-AzureVM; if($vms.Count -gt 0) { WriteToXMLOutput (BuildVirtualMachinesHead); foreach($vm in $vms) { WriteToXMLOutput (BuildVirtualMachineHead $vm.Name $vm.VM.OSVirtualHardDisk.OS $vm.VM.RoleSize); # build disk output WriteToXMLOutput ((BuildLevelSpace 5) + "<OSDisk>" + $vm.VM.OSVirtualHardDisk.MediaLink.AbsoluteUri + "</OSDisk>"); if($vm.VM.DataVirtualHardDisks.Count -gt 0) { WriteToXMLOutput ((BuildLevelSpace 5) + "<DataDisks>"); foreach($DataDisk in $vm.VM.DataVirtualHardDisks) { $size = $DataDisk.LogicalDiskSizeInGB; $lun = $DataDisk.Lun; $uri = $DataDisk.MediaLink.AbsoluteUri; WriteToXMLOutput ((BuildLevelSpace 6) + "<DataDisk lun='$lun' size='$size'>$uri</DataDisk>"); } WriteToXMLOutput ((BuildLevelSpace 5) + "</DataDisks>"); } WriteToXMLOutput (BuildVirtualMachineEnd); } WriteToXMLOutput (BuildVirtualMachinesEnd); } WriteToXMLOutput (BuildSubscriptionEnd $subscriptionName); } WriteToXMLOutput (BuildSubscriptionsEnd);}BuildOutputXml
ARM版本:
$Cred = New-Object System.Management.Automation.PSCredential("XXXXXXXXX@XXXXXXXXX.partner.onmschina.cn",(ConvertTo-SecureString "XXXXXXXXX" -AsPlainText -Force));$AzureRMCred = Get-Credential -Credential $Cred;Login-AzureRmAccount -EnvironmentName AzureChinaCloud -Credential $AzureRMCred;Function WriteToXMLOutput($str){ $OutputfilePath = $PSScriptRoot + "\VM_and_Disks.xml"; $str | Out-File $OutputfilePath -Append;}Function BuildLevelSpace($level){ $levelSpace = " "; $result = ""; for ($i = 1; $i -lt $level; $i++) { $result += $levelSpace; } return $result;}Function BuildSubscriptionsHead(){ return (BuildLevelSpace 1) + "<subscriptions>";}Function BuildSubscriptionsEnd(){ return (BuildLevelSpace 1) + "</subscriptions>";}Function BuildSubscriptionHead($subscriptionName){ return (BuildLevelSpace 2) + "<subscription name='$subscriptionName'>";}Function BuildSubscriptionEnd($subscriptionName){ return (BuildLevelSpace 2) + "</subscription>";}Function BuildVirtualMachinesHead(){ return (BuildLevelSpace 3) + "<virtualmachines>";}Function BuildVirtualMachinesEnd(){ return (BuildLevelSpace 3) + "</virtualmachines>";}Function BuildVirtualMachineHead($virtualmachineName, $OSType, $Size, $Location){ return (BuildLevelSpace 4) + "<virtualmachine name='$virtualmachineName' OS='$OSType' size='$Size' location='$Location'>";}Function BuildVirtualMachineEnd(){ return (BuildLevelSpace 4) + "</virtualmachine>";}Function BuildOutputXml(){ $subscriptions = Get-AzureRmSubscription; WriteToXMLOutput ((BuildLevelSpace 1) + "<?xml version='1.0'?>"); WriteToXMLOutput (BuildSubscriptionsHead); # loop all the subscriptions foreach($subscription in $subscriptions) { $subscriptionName = $subscription.SubscriptionName; Select-AzureRmSubscription -SubscriptionName $subscriptionName; WriteToXMLOutput (BuildSubscriptionHead $subscriptionName); $vms = Get-AzureRmVM; if($vms.Count -gt 0) { WriteToXMLOutput (BuildVirtualMachinesHead); foreach($vm in $vms) { WriteToXMLOutput (BuildVirtualMachineHead $vm.Name $vm.StorageProfile.OsDisk.OsType $vm.HardwareProfile.VmSize $vm.Location); # build disk output WriteToXMLOutput ((BuildLevelSpace 5) + "<OSDisk>" + $vm.StorageProfile.OsDisk.Vhd.Uri + "</OSDisk>"); if($vm.StorageProfile.DataDisks.Count -gt 0) { WriteToXMLOutput ((BuildLevelSpace 5) + "<DataDisks>"); foreach($DataDisk in $vm.StorageProfile.DataDisks) { $size = $DataDisk.DiskSizeGB; $lun = $DataDisk.Lun; $uri = $DataDisk.Vhd.Uri; WriteToXMLOutput ((BuildLevelSpace 6) + "<DataDisk lun='$lun' size='$size'>$uri</DataDisk>"); } WriteToXMLOutput ((BuildLevelSpace 5) + "</DataDisks>"); } WriteToXMLOutput (BuildVirtualMachineEnd); } WriteToXMLOutput (BuildVirtualMachinesEnd); } WriteToXMLOutput (BuildSubscriptionEnd $subscriptionName); } WriteToXMLOutput (BuildSubscriptionsEnd);}BuildOutputXml
输出示例:
53 0
- [Azure]Azure Powershell导出虚拟机及对应磁盘
- [Azure]使用Azure Powershell查看ARM模式下Azure存储中的vhd文件对应的虚拟机
- [Azure]使用Azure Powershell查看ASM模式下Azure存储中的vhd文件对应的虚拟机
- [Azure]使用Powershell删除ARM模式下单台虚拟机及相关资源(非托管磁盘)
- [Azure]使用Powershell删除ARM模式下单台虚拟机及相关资源(托管磁盘)
- [Azure]使用Powershell克隆ARM虚拟机(非托管磁盘)
- [Azure]使用Powershell克隆ARM虚拟机(托管磁盘)
- 使用Azure powershell 创建Azure虚拟机
- 使用 PowerShell 管理 Azure 磁盘
- Azure虚拟机磁盘扩展
- 微软Azure PowerShell使用指南(3) - 暂停及关闭虚拟机
- [Azure]使用Powershell调整ARM虚拟机的系统磁盘和数据磁盘大小
- Azure虚拟机增加磁盘步骤
- 理解及快速测定 Azure 虚拟机的磁盘性能
- 理解及快速测定 Azure 虚拟机的磁盘性能
- [Azure]使用Azure Powershell重新部署ASM虚拟机
- 使用 Azure PowerShell 管理 Azure 虚拟网络和 Windows 虚拟机
- [Azure]使用Powershell将ARM虚拟机(托管磁盘)加入可用性集
- springboot 静态资源配置
- 371. Sum of Two Integers
- ROS 总结(一):ROS系统框架
- Thrift入门初探--thrift安装及java入门实例
- linux定时任务
- [Azure]Azure Powershell导出虚拟机及对应磁盘
- JDBC Spring 之JdbcTemplate 增删改查操作
- Floyd算法
- python Requests
- 【webapp】web app ,hybrid app 及 native app 区别
- java中通过request获取客户端信息
- thinkphp5 数据库和模型详解 之3 模型和对象
- 正则表达式30分钟入门教程
- JAVA攻城狮学习路线