使用单个PowerShell命令在Classic VM和ARM VM上安装扩展

时间:2018-03-25 07:25:42

标签: azure azure-virtual-machine azure-powershell azure-oms

我有一个脚本,可以为订阅中的所有ARM VM安装OMS扩展。问题是我的订阅只包含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 个答案:

答案 0 :(得分:1)

由于您同时拥有经典和ARM VM,因此您有两种不同的部署模型,因此您使用的是两种不同的PowerShell模块。

换句话说,您需要为每个单独登录并使用单独的脚本来使用它们。

在经典模型中,您需要运行以下cmdlet来登录和访问您的VM:

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

在搜索信息时,我找到了this脚本。它是使用两种部署模型从单个或多个订阅加入VM的脚本。