[Azure]使用Azure Powershell查看ASM模式下Azure存储中的vhd文件对应的虚拟机
2017-03-08 21:28
579 查看
如题,使用Powershell将一个账号中所有订阅下ASM模式的存储账号过一遍,将其中的vhd文件对应的虚拟机找出来汇总成表。
脚本如下:
脚本输出:
如题,使用Powershell将一个账号中所有订阅下ASM模式的存储账号过一遍,将其中的vhd文件对应的虚拟机找出来汇总成表。
脚本如下:
$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; $disk_url_mapping = @{}; $vm_url_mapping = @{}; $storage_url_mapping = @{}; Function FillStorageMapping() { $storage_url_mapping.Clear(); $storages = Get-AzureStorageAccount; foreach($storage in $storages) { $storageAccountName = $storage.StorageAccountName; $blobs = Get-AzureStorageBlob -Context $storage.Context -Container vhds -ErrorAction Ignore; foreach ($blob in $blobs) { if ($blob.BlobType -eq "PageBlob") { $url = $blob.ICloudBlob.Uri.AbsoluteUri; if ($url.EndsWith(".vhd") -and !$storage_url_mapping.ContainsKey($url)) { $storage_url_mapping.Add($url, $storageAccountName); } } } } } Function FillDiskMapping() { $disk_url_mapping.Clear(); $disks = Get-AzureDisk; foreach($disk in $disks) { $disk_url_mapping.Add($disk.MediaLink.AbsoluteUri, $disk.DiskName); } } Function FillVmMapping() { $vm_url_mapping.Clear(); $vms = Get-AzureVM; foreach($vm in $vms) { $cloudServiceAndVM = $vm.ServiceName + "#" + $vm.Name; $osDiskUrl = $vm.VM.OSVirtualHardDisk.MediaLink.AbsoluteUri; $vm_url_mapping.Add($osDiskUrl, $cloudServiceAndVM); $dataDisks = $vm.VM.DataVirtualHardDisks; foreach($dataDisk in $dataDisks) { $dataDiskUrl = $dataDisk.MediaLink.AbsoluteUri; $vm_url_mapping.Add($dataDiskUrl, $cloudServiceAndVM); } } } Function ShowStorageVhdOwners() { $subscriptions = Get-AzureSubscription; $results = New-Object System.Collections.ArrayList; foreach($subscription in $subscriptions) { $subscriptionName = $subscription.SubscriptionName; Select-AzureSubscription -SubscriptionName $subscriptionName; FillStorageMapping; FillDiskMapping; FillVmMapping; foreach ($url in $storage_url_mapping.Keys) { $storageAccount = $storage_url_mapping[$url]; $disk = $disk_url_mapping[$url]; $cloudService = ""; $vmName = ""; if ($vm_url_mapping.ContainsKey($url)) { $cloudServiceAndVM = $vm_url_mapping[$url].Split('#'); $cloudService = $cloudServiceAndVM[0]; $vmName = $cloudServiceAndVM[1]; } $results.Add(@{SubscriptionName=$subscriptionName; StorageAccountName=$storageAccount; VhdUrl=$url; DiskName=$disk; CloudService=$cloudService; VirtualMachineName=$vmName;}); } } $results | Select @{Name="SubscriptionName"; Expression={$_["SubscriptionName"]}}, @{Name="StorageAccountName";Expression={$_["StorageAccountName"]}}, @{Name="VHD Url"; Expression={$_["VhdUrl"]}}, @{Name="DiskName"; Expression={$_["DiskName"]}}, @{Name="CloudService"; Expression={$_["CloudService"]}}, @{Name="VirtualMachineName"; Expression={$_["VirtualMachineName"]}} | Out-GridView; } ShowStorageVhdOwners
脚本输出:
相关文章推荐
- [Azure]使用Azure Powershell查看ARM模式下Azure存储中的vhd文件对应的虚拟机
- [Azure]使用Azure Powershell清理ASM模式下未使用的Disk和vhd
- 关于Azure存储账户中存储虚拟机VHD文件的注意事项
- 关于Azure存储账户中存储虚拟机VHD文件的注意事项
- [Azure]使用Azure Powershell重新部署ASM虚拟机
- [Azure]ARM模式下使用Powershell找出订阅中没有被使用的vhd
- 关于Azure存储账户中存储虚拟机VHD文件的注意事项
- [Azure]使用Powershell批量开启ASM虚拟机(带状态检测和重试)
- [Azure]使用Powershell为ASM虚拟机创建快照
- 关于Azure存储账户中存储虚拟机VHD文件的注意事项
- [Azure]使用Powershell获取ARM模式下可用的虚拟机平台映像信息
- [Azure]使用Powershell输出某台ASM虚拟机的NSG和ACL
- [Azure]使用Powershell获取ASM和ARM存储的实际使用量
- 11gRAC 使用ASM存储归档文件的归档模式切换
- [Azure]使用Azure Powershell输出ASM模式下某个账号中所有订阅下的虚拟网络拓扑
- Azure PowerShell (11) 使用自定义虚拟机镜像模板,创建Azure虚拟机并绑定公网IP(VIP)和内网IP(DIP)
- 使用Azure Storage Explorer备份Azure虚拟机VHD
- Android 学习第17课,使用文件的数据存储(4种存储模式)
- Android中使用SharedPreferences进行数据存储及文件操作模式
- 使用 Azure PowerShell 创建高级存储帐户