Как получить список экземпляров масштабируемого набора виртуальных машин Azure с помощью powershell

Я пытаюсь получить список всех экземпляров виртуальных машин во всех масштабируемых наборах подписки с помощью PowerShell.

Я смог перечислить все наборы масштабирования, используя приведенный ниже код, но я хотел бы показать все экземпляры виртуальных машин в каждом из них.

$ azureSubs = Get-AzSubscription -TenantID xxxxxxxxxxxxxxxxx

$ azureSubs | ForEach-Object {Select-AzSubscription $ _ | Out-Null; Get-AzVMss -WarningAction SilentlyContinue} | Export-Csv -Path "c: \ Azure \ VirtualMachinesScaleSet.csv" -NoTypeInformation

Может ли кто-нибудь предложить что-нибудь, чтобы помочь.


person G Beach    schedule 22.11.2019    source источник


Ответы (3)


Вы можете использовать Get-AzVmssVM попробуйте выполнить приведенный ниже сценарий в каждой подписке.

$vmss = Get-AzVmss
$instances = foreach($item in $vmss){
    Get-AzVmssVM -ResourceGroupName $item.ResourceGroupName -VMScaleSetName $item.Name
}
$instances | Export-Csv -Path "C:\Users\joyw\Desktop\ins.csv" 

введите здесь описание изображения

Обновление:

Для нескольких подписок в клиенте попробуйте сценарий ниже.

$subs = Get-AzSubscription -TenantId "<tenant-id>"
$instances = @()
foreach($sub in $subs){
    Set-AzContext -SubscriptionId $sub.Id
    $vmss = Get-AzVmss
    foreach($item in $vmss){
        $vms = Get-AzVmssVM -ResourceGroupName $item.ResourceGroupName -VMScaleSetName $item.Name
        $instances += $vms
    }
}
$instances | Export-Csv -Path "C:\Users\Administrator\Desktop\ins.csv" 
person Joy Wang    schedule 25.11.2019
comment
Спасибо за эту радость ... это, безусловно, получает экземпляры для одной подписки. - person G Beach; 25.11.2019
comment
Знаете ли вы, какие изменения в код необходимо внести, чтобы получить экземпляры для нескольких подписок в клиенте, без необходимости запускать приведенный выше сценарий для каждой из них? - person G Beach; 25.11.2019

Вы можете использовать < strong> Get-AzureRmVM, чтобы получить имя хоста и идентификатор экземпляра:

PS > Get-AzureRmVM -ResourceGroupName "vmss" -VMScaleSetName "vmss"
person Sajeetharan    schedule 22.11.2019
comment
Не уверен, но ваш ответ правильный, и я проголосовал за вас, чтобы удалить отрицательный ответ. - person Peter Kay; 22.11.2019
comment
Это не было моим отрицательным голосом, но, возможно, потому, что библиотеки AzureRm устарели. - person Mike Oryszak; 22.11.2019
comment
@MikeOryszak Ага, спасибо :) теперь это должно иметь смысл - person Sajeetharan; 22.11.2019
comment
Он отклонен, потому что это неправильный api. Я думаю, они имели в виду Get-AzureRmVmssVM - person joelforsyth; 23.06.2021

Вы можете использовать Get -AzVmss (использует библиотеку Az) для получения информации о масштабируемом наборе.

PS Get-AzVmss 
person Mike Oryszak    schedule 22.11.2019