列出属于特定子网的所有azure vm

时间:2015-03-11 11:20:56

标签: powershell azure powershell-ise azure-powershell

我想列出特定子网中的所有azure vms。我不知道如何为此编写PowerShell脚本。我正在尝试以下但它没有给出所需的输出。我想要的输出 - 属于子网的所有虚拟机都具有ip 10.87.00.01 ... 10.87.99.99应该列在我的文本文件subnet_VM.txt中

$tgtIP = "10.87.xx.xx"
$vms = Get-AzureVM

foreach($vm in $vms)
{
  $vmIP = (Get-AzureVM -ServiceName $vm.ServiceName  –Name  $vm.Name).IpAddress
  foreach($ip in $vmIP)
  {
    if($ip -like '$tgtIP*')
    {
       $vm.Name > C:\AZURE\subnet_VM.txt
    }
  }
}

如果我得到这方面的帮助,将会非常有帮助。提前谢谢。

1 个答案:

答案 0 :(得分:1)

请注意,在Azure中,子网具有名称。因此,更优雅的解决方案是使用子网名称而不是原始IP范围。由于这是你最终想要实现的目标,我也将包含该解决方案。

$vms = Get-AzureVM

$tgtSubnet = "Subnet-1"
foreach($vm in $vms)
{
    $thisVM = Get-AzureVM -ServiceName $vm.ServiceName –Name $vm.Name
    $thisVMSubnet = Get-AzureSubnet -VM $thisVM
    if ($thisVMSubnet -eq $tgtSubnet)
    {
        $output  =$output + "`r`n" + $thisVM.Name 
    }
}
$output | Out-File C:\Azure\subnet_VM.txt