[Azure]Azure Powershell导出虚拟机及对应磁盘
2017-02-24 14:39
423 查看
这里发两个脚本,用于获取某个账号下的所有订阅中的虚拟机的磁盘信息,分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
输出示例:
![](https://img-blog.csdn.net/20170224143828439?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXdlcnR5dXBvaXV5dHI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
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
输出示例:
相关文章推荐
- [Azure]使用Azure Powershell查看ARM模式下Azure存储中的vhd文件对应的虚拟机
- [Azure]使用Powershell将ARM虚拟机(托管磁盘)加入可用性集
- [Azure]使用Powershell调整ARM虚拟机的系统磁盘和数据磁盘大小
- 使用Azure Powershell创建数据磁盘附加到DS系列虚拟机
- [Azure]使用Powershell克隆ARM虚拟机(非托管磁盘)
- [Azure]使用Powershell克隆ARM虚拟机(托管磁盘)
- [Azure]使用Powershell导出所有订阅下的ARM虚拟机的信息
- Azure Powershell使用已有特殊化非托管磁盘创建ARM虚拟机
- [Azure]使用Azure Powershell查看ASM模式下Azure存储中的vhd文件对应的虚拟机
- 调整Azure中虚拟机数据磁盘大小实践
- Azure虚拟机添加磁盘
- [Azure]使用Azure Powershell重新部署ASM虚拟机
- 【虚拟机-磁盘管理】理解及快速测定 Azure 虚拟机的磁盘性能
- 批量导出Azure所有虚拟机信息
- Azure Powershell获取指定订阅下的虚拟机信息(ASM)
- 理解及快速测定 Azure 虚拟机的磁盘性能
- 如何为Azure虚拟机添加数据磁盘
- [Azure]ARM虚拟机整机磁盘快照[1]——创建快照
- [Azure]ARM模式下删除虚拟机挂盘修复后恢复的脚本(非托管磁盘)