azure无法为虚拟机添加扩展

时间:2014-10-31 09:25:11

标签: azure virtual

我正在尝试将Antimalware扩展添加到虚拟机以进行保护,但是当我尝试在Azure门户中添加扩展时,我收到以下错误:

无法向虚拟机添加扩展程序。虚拟机请求无效指定的源映像是用户映像。图像必须是平台图像。

我已经安装了VMAgent。

作为额外信息,我尝试使用powershell命令通过使用以下命令安装扩展并获取相应的响应:

$ vm = Get-AzureVM -ServiceName" MyServiceName" -Name" MyVMName"

VERBOSE:... - 已完成的操作:获取部署*

Set-AzureVMExtension -Publisher Microsoft.Azure.Security -ExtensionName IaaSAntimalware -Version 1. * -VM $ vm.VM

警告:资源扩展引用列表为null或为空

AvailabilitySetName: ConfigurationSet:{Microsoft.WindowsAzure.Commands.ServiceManagement.Model.NetworkConfigurationSet} DataVirtualHardDisks:{" MyVMName"} 标签 : OSVirtualHardDisk:Microsoft.WindowsAzure.Commands.ServiceManagement.Model.OSVirtualHardDisk RoleName:" MyVMName" RoleSize:大 RoleType:PersistentVMRole WinRMCertificate: X509证书: NoExportPrivateKey:错 NoRDPEndpoint:错误 NoSSHEndpoint:错误 DefaultWinRmCertificateThumbprint:F4CF28C735C5E557C7B47742E4F16A08959272F1 ProvisionGuestAgent: ResourceExtensionReferences:{IaaSAntimalware} DataVirtualHardDisksToBeDeleted:

更新 - AzureVM -Name" MyServiceName" -ServiceName" MyVMName" -VM $ vm.VM

VERBOSE:11:15:10 - 完成操作:获取部署 VERBOSE:11:15:10 - 开始操作:更新 - AzureVM VERBOSE:11:15:42 - 完成操作:更新-AnanVM

OperationDescription OperationId OperationStatus -------------------- ----------- --------------- 更新-AceanVM 387b77a2-c8fc-233a-913d-cd364c855429成功

运行命令后,我检查并在VM上安装VMAgent,但没有扩展名。

有没有人有任何想法?

谢谢!

2 个答案:

答案 0 :(得分:0)

原因可能是你的第一线 $ vm = Get-AzureVM -ServiceName“MyServiceName” - 名称“MyVMName”

  • 如果未指定-servicename和-name,则Get-AzureVM不返回VM对象
  • Set-AzureVMextension仅适用于-VM输入

试试这个:

https://gist.github.com/andreaswasita/428fc5519b0ddac76b01

答案 1 :(得分:0)

根据我的经验,此警告是由于Azure Guest代理未部署在VM上,未在VM上运行或过时。如果VM没有健康(且当前)的客户代理,您将无法部署扩展。

您可以使用以下方式检查来宾代理状态:

$vm.GuestAgentStatus

你正在寻找“准备好”的“状态”;其他任何东西,扩展可能会失败。然后扩展Klaad的代码......

# Azure Cloud Service and Azure VM Name 
$service= Read-Host -Prompt 'Azure Cloud Service:' 
$name = Read-Host -Prompt 'Azure VM:' 

# Get the Cloud Service and Azure VM 
$vm = Get-AzureVM –ServiceName $service –Name $name 

# Check for health of the agent
If ($vm.GuestAgentStatus.Status -ne "Ready") {
    Write-Error "The VM agent appears to not be installed or is in an unhealthy state."
}
Else {
    # Add Microsoft Antimalware Agent to the Azure VM 
    Set-AzureVMExtension -Publisher Microsoft.Azure.Security -ExtensionName IaaSAntimalware -Version 1.* -VM $vm.VM 

     # Update the Azure VM and install the Antimalware Agent 
    Update-AzureVM -Name $name -ServiceName $service -VM $vm.VM 
}

要检查代理是否存在,您可以在服务器上查找以下三个进程:

WaAppAgent.exe
WindowsAzureGuestAgent.exe
WindowsAzureTelemetryService.exe

您可以从here下载代理(编辑时的当前版本为2.6.1198.718)。

安装需要两个步骤(来源:Zach Millis):

  1. 安装代理。这要求您以管理员身份运行PowerShell,并在PowerShell提示符下执行安装程序。 (不要直接跑)
  2. 更新Azure,以便了解代理。这需要执行以下代码:
  3. 代码:

    # Azure Cloud Service and Azure VM Name
    $service= Read-Host -Prompt 'Azure Cloud Service:' 
    $name = Read-Host -Prompt 'Azure VM:' 
    
    # Get the Cloud Service and Azure VM 
    $vm = Get-AzureVM –ServiceName $service –Name $name 
    
    # Provision the guest agent so Azure knows about it
    $vm.VM.ProvisionGuestAgent = $TRUE
    
    # Update the Azure VM and install the Antimalware Agent 
    $vm | Update-AzureVM
    
    # Refresh the connection to the VM to get the new status
    $vm = Get-AzureVM –ServiceName $service –Name $name 
    
    # Check status - should now be "Ready"
    $vm.GuestAgentStatus
    

    应该是它。