【问题标题】:Get azure disk info csv获取 azure 磁盘信息 csv
【发布时间】:2021-05-18 10:31:40
【问题描述】:

您好,我正在尝试获取 azure 虚拟机的磁盘信息和网络信息。

我可能在做一些傻事,但我认为这是将 vm 添加到网络 foreach 循环中的情况。

我已经把脚本放在下面了,谁能看出我哪里出错了?

$reportName = "sample.csv"
$report = @()
$vms = Get-AzVM

$publicIps = Get-AzPublicIpAddress 
$nics = Get-AzNetworkInterface | ?{ $_.VirtualMachine -NE $null} 
foreach ($nic in $nics) { 
    $info = "" | Select VmName, ResourceGroupName, Region, VmSize, VirturalNetwork, Subnet, DnsServers, NicDns, PrivateIpAddress, OsType, OSDisk, DiagDisk, DataDisk, PublicIPAddress, vCPU, Memory
    $vm = $vms | ? -Property Id -eq $nic.VirtualMachine.id 
    foreach($publicIp in $publicIps) { 
        if($nic.IpConfigurations.id -eq $publicIp.ipconfiguration.Id) {
            $info.PublicIPAddress = $publicIp.ipaddress
            } 
        } 

        #$location = $vm.location
        $info.OsType = $vm.StorageProfile.OsDisk.OsType 
        $info.VMName = $vm.Name 
        $info.ResourceGroupName = $vm.ResourceGroupName 
        $info.Region = $vm.Location 
        $info.VmSize = $vm.HardwareProfile.VmSize
        $size = $info.VmSize = $vm.HardwareProfile.VmSize
        $info.vCPU = (Get-AzVMSize -Location $location | ? {$_.name -eq $size}).NumberOfCores
        $info.Memory = (Get-AzVMSize -Location $location | ? {$_.name -eq $size}).MemoryInMB
        $info.VirturalNetwork = $nic.IpConfigurations.subnet.Id.Split("/")[-3] 
        $info.Subnet = $nic.IpConfigurations.subnet.Id.Split("/")[-1] 
        $info.PrivateIpAddress = $nic.IpConfigurations.PrivateIpAddress 
        $vm = get-azvm | ? {$_.name -eq $vm}
        foreach ($vms in $vm) {
        $info.OSDiskSizeGB = $vm.StorageProfile.OsDisk.DiskSizeGB
        $info.OSDisk = $vm.StorageProfile.OsDisk.Vhd.uri
        $info.DiagDisk = $vm.DiagnosticsProfile.BootDiagnostics.StorageUri
        $info.DataDisk = $vm.StorageProfile.DataDisks.vhd.uri -join "**"
        }

        $report+=$info 
    } 
$report | ft VmName, ResourceGroupName, Region, VmSize, VirturalNetwork, Subnet, DnsServers, NicDns, PrivateIpAddress, OsType, OSDisk, DiagDisk, DataDisk, PublicIPAddress, vCPU, Memory 
$report | Export-CSV "c:\temp\$reportName"

提前致谢:)

编辑:

这是我得到的输出,没有任何 VM 的磁盘信息

VmName    ResourceGroupName Region     VmSize         VirturalNetwork Subnet  DnsServers NicDns PrivateIpAddress  OsType OSDisk DiagDisk DataDisk PublicIPAddress vCPU Memory
------    ----------------- ------     ------         --------------- ------  ---------- ------ ----------------  ------ ------ -------- -------- --------------- ---- ------
vmr1-sec1 DEPLOYRG1         westeurope Standard_D2_v4 av-vnet         av-sub2                   172.0.2.4        Windows                                             2   8192
vmr2-sec1 DEPLOYRG1         westeurope Standard_D2_v4 av-vnet         av-sub2                   172.0.2.5        Windows                                             2   8192
cks-cp1   K8S               westeurope Standard_B2s   K8S-vnet        default                   10.0.0.4           Linux                          20.71.120.71       2   4096

【问题讨论】:

  • 有什么问题?错误信息?值不正确?
  • @Nick.McDermaid 嗨尼克,我已经添加了我得到的表格作为输出 *请原谅格式(:)
  • $info.OsType 有数据吗?如果您在控制台中查看$vm.StorageProfile,它会是什么样子?
  • @NorrinRad 您还有其他顾虑吗?

标签: azure powershell


【解决方案1】:

目前,Azure 默认使用 Azure 托管磁盘。默认情况下,Azure 托管磁盘不再存储到 Blob 存储中。更多详情请参考herehere。如果要获取 Azure 托管磁盘的 vhd URL,需要运行命令Grant-AzDiskAccess 来获取。 但请注意,网址是有生命周期的,会在一段时间后过期

所以我建议您将磁盘名称或磁盘 ID 存储在 CSV 文件中

【讨论】:

    猜你喜欢
    • 2011-12-08
    • 1970-01-01
    • 2019-08-06
    • 1970-01-01
    • 1970-01-01
    • 2020-03-31
    • 2012-10-27
    • 2013-06-01
    • 2016-08-26
    相关资源
    最近更新 更多