2016-07-05 2 views
0

모든 자원과 연관의 목록 (xlsx가 바람직 함)을 내보내는 방법을 알고있는 사람이 있습니까?내보내기 Azure의 모든 관련 자원 목록

예를 들어 스프레드 시트의 한 행에 VM, virtualNIC, StorageAccount, vNet, ResourceGroup, SecurityGroup 및 VM 자체와 관련된 기타 리소스의 이름을 알고 싶습니다.

목적은 모든 리소스가 어떻게 연관되어 있는지를 한눈에 파악하는 것입니다. 예를 들어 SecurityGroup에 포트 규칙을 추가하면 영향을받는 다른 모든 리소스를 볼 수 있습니다.

건배

답변

0

당신이

Login-AzureRmAccount 

Function Dump-VirtualMachinesV1($outputPath) { 
    $VMs = Find-AzureRmResource -ResourceType 'Microsoft.ClassicCompute/virtualMachines' -ExpandProperties | Sort-Object ResourceName 

    $output = "Name,Location,IP,VNET,OS,Azure Size,Core,RAM,OS Disks,Temp Disk,Data Disks (TB),Resource Groups,C (OS),Temp, Data,Storage Account,Diagnostics Storage Account,Endpoints,Status,VIP`n" 

    foreach ($vm in $VMs) { 
     $vmSize = FixSize($vm.Properties.HardwareProfile.Size) 
     $vmCores = (GetVmConfig($vm.Properties.HardwareProfile.Size)).Cores 
     $vmRAM = (GetVmConfig($vm.Properties.HardwareProfile.Size)).RAM 
     $diagnosticsStorageAccount = GetDiagnosticsStorageAccount($VM.Properties) 
     $endpoints = GetEndpoints($vm.Properties) 

     $output += $vm.Name + "," +` 
      $vm.Location + "," +` 
      $vm.Properties.InstanceView.PrivateIpAddress + "," +` 
      $vm.Properties.NetworkProfile.VirtualNetwork.Name + "," +` 
      $vm.Properties.StorageProfile.OperatingSystemDisk.OperatingSystem + "," +` 
      $vmSize + "," +` 
      $vmCores + "," +` 
      $vmRAM + "," +` 
      "1," +` 
      "1," +` 
      $vm.Properties.StorageProfile.DataDisks.Count + "," +` 
      $vm.ResourceGroupName + "," +` 
      $vm.Properties.DomainName.Name + "," +` 
      "," +` 
      "," +` 
      $vm.Properties.StorageProfile.OperatingSystemDisk.StorageAccount.Name + "," +` 
      $diagnosticsStorageAccount + "," +` 
      $endpoints + "," +` 
      $vm.Properties.InstanceView.Status + "," +` 
      $vm.Properties.InstanceView.PublicIpAddresses + "`n" 
    } 
    $output | Out-File -Encoding ascii $outputPath 
} 


Function Dump-VirtualMachinesV2($outputPath) { 
    $VMs = Find-AzureRmResource -ResourceType 'Microsoft.Compute/virtualMachines' -ExpandProperties | Sort-Object ResourceName 

    $output = "Name,Location,IP,VNET,OS,Azure Size,Core,RAM,OS Disks,Temp Disk,Data Disks (TB),Cloud Services,C (OS),Temp, Data,Storage Account,Diagnostics Storage Account,Endpoints,Status,VIP`n" 

    foreach ($vm in $VMs) { 
     $vmSize = FixSize($vm.Properties.HardwareProfile.VMSize) 
     $vmCores = (GetVmConfig($vm.Properties.HardwareProfile.VMSize)).Cores 
     $vmRAM = (GetVmConfig($vm.Properties.HardwareProfile.VMSize)).RAM 
     $diagnosticStorageAccount = GetDiagnosticsStorageAccount($vm.Properties) 
     $endpoints = GetEndpoints($vm.Properties) 


     $vm.Properties.StorageProfile.OsDisk.VHD -match "https*://(\w+)" 
     $osStorageAccount = $matches[1] 

     $output += $vm.Name + "," +` 
      $vm.Location + "," +` 
      $vm.Properties.InstanceView.PrivateIpAddress + "," +` 
      $vm.Properties.NetworkProfile.VirtualNetwork.Name + "," +` 
      $vm.Properties.StorageProfile.OsDisk.OsType + "," +` 
      $vmSize + "," +` 
      $vmCores + "," +` 
      $vmRAM + "," +` 
      "1," + ` 
      "1," + ` 
      $vm.Properties.StorageProfile.DataDisks.Count + "," +` 
      $vm.Properties.DomainName.Name + "," + ` 
      "," + ` 
      "," + ` 
      "," + ` 
      $osStorageAccount + "s," +` 
      $diagnosticsStorageAccount + "," +` 
      $endpoints + "," +` 
      $vm.Properties.InstanceView.Status + "," +` 
      $vm.Properties.InstanceView.PublicIpAddresses + "`n" 
     } 
     $output | Out-File -Encoding ascii $outputPath 
} 



Function FixSize ($size) { 
    Switch ($size) { 
     'Extra Small' {$size = 'Standard_A0'} 
     'Small' {$size = 'Standard_A1'} 
     'Medium' {$size = 'Standard_A2'} 
     'Large' {$size = 'Standard_A3'} 
     'Extra Large' {$size = 'Standard_A4'} 
    } 
    return $size 
} 


Function GetVmConfig($size) { 
    $size = FixSize($size) 
    $vmConfig = @{"Cores" = 0; "RAM" = 0} 
    switch -Regex ($size) { 
     "A0$" {$vmConfig = @{"Cores" = 1; "RAM" = 0.75}} 
     "A1$" {$vmConfig = @{"Cores" = 1; "RAM" = 1.75}} 
     "A2$" {$vmConfig = @{"Cores" = 2; "RAM" = 3.5}} 
     "A3$" {$vmConfig = @{"Cores" = 4; "RAM" = 7}} 
     "A4$" {$vmConfig = @{"Cores" = 8; "RAM" = 14}} 
     "A5$" {$vmConfig = @{"Cores" = 2; "RAM" = 14}} 
     "A6$" {$vmConfig = @{"Cores" = 4; "RAM" = 28}} 
     "A7$" {$vmConfig = @{"Cores" = 8; "RAM" = 56}} 
     "A8$" {$vmConfig = @{"Cores" = 8; "RAM" = 56}} 
     "A9$" {$vmConfig = @{"Cores" = 16; "RAM" = 112}} 
     "A10$" {$vmConfig = @{"Cores" = 8; "RAM" = 56}} 
     "A11$" {$vmConfig = @{"Cores" = 16; "RAM" = 112}} 
     "DS?1(_v2)?$" {$vmConfig = @{"Cores" = 1; "RAM" = 3.5}} 
     "DS?2(_v2)?$" {$vmConfig = @{"Cores" = 2; "RAM" = 7}} 
     "DS?3(_v2)?$" {$vmConfig = @{"Cores" = 4; "RAM" = 14}} 
     "DS?4(_v2)?$" {$vmConfig = @{"Cores" = 8; "RAM" = 28}} 
     "DS?5(_v2)?$" {$vmConfig = @{"Cores" = 16; "RAM" = 56}} 
     "DS?11(_v2)?$" {$vmConfig = @{"Cores" = 2; "RAM" = 14}} 
     "DS?12(_v2)?$" {$vmConfig = @{"Cores" = 4; "RAM" = 28}} 
     "DS?13(_v2)?$" {$vmConfig = @{"Cores" = 8; "RAM" = 56}} 
     "DS?14(_v2)?$" {$vmConfig = @{"Cores" = 16; "RAM" = 112}} 
     "GS?1$" {$vmConfig = @{"Cores" = 2; "RAM" = 28}} 
     "GS?2$" {$vmConfig = @{"Cores" = 4; "RAM" = 56}} 
     "GS?3$" {$vmConfig = @{"Cores" = 8; "RAM" = 112}} 
     "GS?4$" {$vmConfig = @{"Cores" = 16; "RAM" = 224}} 
     "GS?5$" {$vmConfig = @{"Cores" = 32; "RAM" = 448}} 
    } 
    return $vmConfig 
} 



Function GetVip($properties) { 
    $vip = '' 
    $inputEndpoints = $properties.NetworkProfile.InputEndpoints 
    if ($inputEndpoints.Count -gt 0) { 
     $vip = $inputEndpoints[0].publicIpAddress 
    } 
    return $vip 
} 

Function GetEndpoints($properties) { 
    $endpoints = '' 
    $inputEndpoints = $properties.NetworkProfile.InputEndpoints 
    if ($inputEndpoints.Count -gt 0) { 
     $endpoints += $inputEndpoints.PublicPort + ' ' 
    } 
    return $endpoints 
} 

Function GetDiagnosticsStorageAccount($properties) { 
    $storageAccount = '' 
    foreach ($extension in $properties.Extensions) { 
     if ($extension.Extension -eq 'IaaSDiagnostics') { 
      $storageAccount = $extension.Parameters.Public.StorageAccount 
     } 
    } 
    return $storageAccount 
} 



$outputPathV1 = "c:\temp\Azure\Q2-VMv1.csv" 
$outputPathV2 = "c:\temp\Azure\Q2-VMv2.csv" 

Dump-VirtualMachinesV1($outputPathV1) 
Dump-VirtualMachinesV2($outputPathV2) 
같은 스크립트를 사용할 수 있습니다