列出属于特定子网的所有 azure 虚拟机

Listing all azure vm belonging to particular subnet

我想列出特定子网中的所有 azure 虚拟机。我不知道如何为此编写 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
    }
  }
}

如果我在这方面得到帮助,那将非常有帮助。提前致谢。

请注意,在 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