我想列出特定子网中的所有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
}
}
}
如果我得到这方面的帮助,将会非常有帮助。提前谢谢。
答案 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