Установите расширение на виртуальных машинах Classic и ARM с помощью одной команды PowerShell

У меня есть скрипт, который устанавливает расширения OMS для всех виртуальных машин ARM в подписке. Проблема в том, что у меня есть подписки, которые содержат только виртуальные машины ARM, подписки, которые содержат только классические виртуальные машины, и подписки, которые имеют оба типа виртуальных машин. Как я могу изменить скрипт для работы во всех условиях? Сценарий:

#This script installs OMS Monitoring Agent to all VMs in the selected Subscription.
#Before running this script, the user must login to Azure account and select target subscription.
#Example:
#Login-AzureRmAccount
#Select-AzureRmSubscription 'SubscriptionName'

$WorkspaceID = 'Provide Workspace ID here'
$WorkspaceKey = 'Provide Workspace key here'
$VMs = Get-AzureRmVM

$VMs.where({$_.osprofile.windowsconfiguration}) | ForEach-Object {
    "Installing Microsoft.EnterpriseCloud.Monitoring.MicrosoftMonitoringAgent Extension: {0}" -f $_.id
    Set-AzureRmVMExtension -ResourceGroupName $_.ResourceGroupName -VMName $_.Name -Name omsAgent -Publisher 'Microsoft.EnterpriseCloud.Monitoring' `
    -ExtensionType 'MicrosoftMonitoringAgent' -AsJob -TypeHandlerVersion '1.0' -Location $_.Location -ForceRerun 'yesh' `
    -SettingString ( "{'workspaceId': '$WorkspaceID'}") `
    -ProtectedSettingString "{'workspaceKey': '$WorkspaceKey'}" | 
    Add-Member -Name VM -Value $_.Id -MemberType NoteProperty
}

1 ответ

Решение

Поскольку у вас есть как классические, так и виртуальные машины ARM, у вас есть две разные модели развертывания, следовательно, вы используете два разных модуля PowerShell.

Другими словами, вам нужно войти в систему отдельно для каждого и иметь отдельные сценарии для их использования.

В классической модели вам нужно выполнить следующий командлет для входа и доступа к вашим виртуальным машинам:

Add-AzureAccount
Get-AzureVM | Set-AzureVMExtension `` 
    -Publisher 'Microsoft.EnterpriseCloud.Monitoring' `` 
    -ExtensionName 'MicrosoftMonitoringAgent' `` 
    -Version '1.*' `` 
    -PublicConfiguration "<workspace id>" `` 
    -PrivateConfiguration "<workspace key>" `` 

При поиске информации я нашел этот скрипт. Это скрипт для загрузки виртуальных машин из одной или нескольких подписок с использованием обеих моделей развертывания.

Другие вопросы по тегам