Я хочу экспортировать XML-файл, содержащий все облачные сервисы и Vms в каждой облачной службе.Как перечислить все облачные сервисы в Azure PowerShell, а затем зациклировать каждую облачную службу, чтобы узнать, сколько vm в ней
ответ
Я бы назвал только Get-AzureVM
один раз, чтобы оптимизировать обработку. Впоследствии я собирал и выводил команды PowerShell, которые быстрее, чем фильтрация с помощью команд Azure PowerShell.
И с группировкой вы также получите ответ на свой вопрос в своем названии: сколько виртуальных машин находятся в облачной службе? Это просто получить из свойства Count.
$allVMs = Get-AzureVM
$allVMs | Group-Object -Property ServiceName
<# Output
Count Name Group
----- ---- -----
2 pksttest1 {Microsoft.WindowsAzure.Commands.ServiceManagement.Model.PersistentVMRoleListContext, Microsoft.WindowsAzure.Commands.ServiceManage...
1 pksttest2 {Microsoft.WindowsAzure.Commands.ServiceManagement.Model.PersistentVMRoleListContext}
#>
$services = Get-AzureVM | Group-Object -Property ServiceName
foreach ($service in $services) {
# Output cloud service name
"Cloud Service '$($service.Name)'"
# Output VMs in that cloud service
foreach ($vm in $service.Group) {
"VM '$($vm.HostName)'"
}
}
<# Output
Cloud Service 'pksttest1'
VM 'host1'
VM 'host3'
Cloud Service 'pksttest2'
VM 'host2'
#>
В вашей выборке вы вызываете API Azure Management Service один раз, чтобы получить все облачные сервисы, а затем снова для каждой службы облака, чтобы получить виртуальные машины. С Get-AzureVM
вы получаете уже все необходимые данные.
я опубликовал образец фрагмент кода на GitHub Gist: https://gist.github.com/pkirch/1ec6f3c1ca057b8beefb
Большое спасибо, это действительно большая помощь для меня, я из Китая в Пекине, а Microsoft Azure не так популярен, поэтому я вряд ли смогу найти помощь у людей рядом со мной или с веб-сайтом. И теперь я хочу найти vm по подсети в лазурной силе, можете ли вы показать мне путь! –
$ = Get список каналов-AzureService Еогеасп ($ служба в $ список каналов) { $ vmList = Get-AzureVM -ServiceName $ service.ServiceName Еогеасп ($ vm in $ vmList) {........} } Я пробовал этот скрипт, а затем создавал файл Xml, я думаю, что нашел свой путь: есть ли другой способ для краткости? –