Установите расширение на виртуальных машинах 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>" ``
При поиске информации я нашел этот скрипт. Это скрипт для загрузки виртуальных машин из одной или нескольких подписок с использованием обеих моделей развертывания.