这里发两个脚本,用于获取某个账号下的所有订阅中的虚拟机的磁盘信息,分ASM和ARM两部分。
ASM版本:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92$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版本:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92$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导出虚拟机及对应磁盘的全部内容,更多相关[Azure]Azure内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复