PowerShell列出所有Azure VM数据磁盘大小混乱



基于Microsoft Azure的这篇知识库文章:https://learn.microsoft.com/en-us/azure/virtual-machines/windows/faq#how-多存储-带虚拟机的can-

我们可以将多个数据磁盘连接到Azure VM。

但是,我们如何在PowerShell查询中动态显示它?

Get-AzVM | ForEach-Object {
$size = $_.HardwareProfile.VmSize
$vmsize = Get-AzVMSize -vmname $_.Name -ResourceGroupName $_.ResourceGroupName | Where-Object { $_.name -eq $size }
$nic = $_.NetworkProfile.NetworkInterfaces.id.split('/') | Select-Object -Last 1
# Implicitly outputs an object with the given properties
[pscustomobject]@{
Location   = $_.Location
Name       = $_.Name
osdiskingb = $_.StorageProfile.OsDisk.DiskSizeGB
data1diskingb = ($_.StorageProfile.DataDisks[0].DiskSizeGB)
data2diskingb = ($_.StorageProfile.DataDisks[1].DiskSizeGB)
data3diskingb = ($_.StorageProfile.DataDisks[2].DiskSizeGB)
memory     = [Math]::Round(($vmsize.MemoryInMB)/1024, 1)
cpu        = $vmsize.NumberOfCores
nic        = $nic
ip         = (Get-AzNetworkInterface -Name $nic).ipconfigurations.privateipaddress
VMTags     = $_.Tags
VMStatus   = $_.StatusCode
State      = $_.ProvisioningState
} 
} | ogv

使用Zett42从中创建的上述静态PowerShell查询:优化PowerShell代码以避免在计算的属性内多次调用cmdlet?我只能手动复制粘贴/重复下面的这一行:

data1diskingb = ($_.StorageProfile.DataDisks[0].DiskSizeGB)
data2diskingb = ($_.StorageProfile.DataDisks[1].DiskSizeGB)
data3diskingb = ($_.StorageProfile.DataDisks[2].DiskSizeGB)

如果Azure虚拟机有5-10个以上的数据磁盘,我必须相应地多次复制和粘贴它。

因此,我需要更新脚本,以便它可以动态显示所有数据磁盘。

使用以下PowerShell命令打印与VM关联的所有数据磁盘

(Get-AzVM -Name <VM-Name> -ResourceGroupName <RG-Name>).StorageProfile.DataDisks

如果只想打印磁盘名称和大小,请使用foreach语句

$disks = (Get-AzVM -Name <VM-Name> -ResourceGroupName <RG-Name>).StorageProfile.DataDisks
foreach ($disk in $disks){
Write-Output $disk.Name, $disk.DiskSizeGB
}

最新更新