Windows용 가상 머신 확장 및 기능

Azure VM(가상 머신) 확장은 Azure VM에서 배포 후 구성 및 자동화 태스크를 제공하는 작은 애플리케이션입니다. 예를 들어 가상 머신에 소프트웨어 설치, 바이러스 백신 보호 또는 VM의 스크립트 내부 실행이 필요한 경우 VM 확장을 사용할 수 있습니다.

Azure CLI, PowerShell, ARM(Azure Resource Manager) 템플릿, Azure Portal을 사용하여 Azure VM 확장을 실행할 수 있습니다. 확장을 새 VM 배포와 함께 번들로 묶거나 기존 시스템에 대해 실행할 수 있습니다.

이 문서에서는 확장 검색, 관리, 제거하는 방법에 대한 필수 조건 및 참고 자료를 포함한 Azure VM 확장의 개요를 제공합니다. 많은 VM 확장을 사용할 수 있으므로 이 문서에서는 일반화된 정보를 제공합니다. 각 확장에는 잠재적으로 고유한 구성 및 자체 설명서가 있습니다.

사용 사례 및 샘플

각 Azure VM 확장에는 특정 사용 사례가 있습니다. 다음 몇 가지 예를 참조하세요.

프로세스 관련 확장 외에도 Windows 및 Linux 가상 머신에 대해 사용자 지정 스크립트 확장을 사용할 수 있습니다. Windows용 사용자 지정 스크립트 확장을 사용하면 PowerShell 스크립트를 VM에서 실행할 수 있습니다. 사용자 지정 스크립트는 네이티브 Azure 도구로 제공할 수 있는 것 이상의 구성이 필요한 Azure 배포를 디자인할 때 유용합니다.

필수 조건

Azure VM 확장을 사용하기 위한 다음 필수 조건을 검토합니다.

Azure VM 에이전트

VM에서 확장을 처리하려면 Windows용 Azure Virtual Machine 에이전트가 설치되어 있어야 합니다. 이 에이전트를 Azure VM 에이전트 또는 Windows 게스트 에이전트라고도 합니다. 확장 설치를 준비를 할 때 일부 확장에는 리소스 또는 종속성에 대한 액세스와 같은 개별 필수 조건이 있습니다.

Azure VM 에이전트는 Azure VM과 Azure 패브릭 컨트롤러 간 상호 작용을 관리합니다. 에이전트는 VM 확장 실행을 포함하여 Azure VM 배포 및 관리의 다양한 기능적 측면을 담당합니다.

Azure VM 에이전트는 Azure Marketplace 이미지에 사전 설치됩니다. 지원되는 운영 체제에 에이전트를 수동으로 설치할 수도 있습니다.

에이전트는 여러 운영 체제에서 실행됩니다. 그러나 확장 프레임워크에는 확장에서 사용하는 운영 체제에 대한 제한이 있습니다. 일부 확장은 모든 운영 체제에서 지원되지 않으며, 오류 코드 51(“지원되지 않는 OS”)을 내보낼 수 있습니다. 지원 가능성에 대한 개별 확장 설명서를 확인합니다.

네트워크 액세스

확장 패키지는 Azure Storage 확장 리포지토리에서 다운로드합니다. 확장 상태 업로드는 Azure Storage에 게시됩니다.

지원되는 버전의 Azure VM 에이전트를 사용하는 경우 VM 지역의 Azure Storage 대한 액세스를 허용할 필요가 없습니다. VM 에이전트를 사용하여 에이전트 통신을 위한 Azure 패브릭 컨트롤러로 통신을 리디렉션할 수 있습니다(개인 IP 주소 168.63.129.16에서 권한 있는 채널을 통한 HostGAPlugin 기능). 지원되지 않는 버전의 VM 에이전트를 사용하는 경우 VM의 해당 지역에서 Azure Storage에 대한 아웃바운드 액세스 권한을 허용해야 합니다.

Important

게스트 방화벽을 사용하거나 프록시를 통해 IP 주소 168.63.129.16에 대한 액세스를 차단하면 확장이 실패합니다. 지원되는 버전의 VM 에이전트를 사용하거나 아웃바운드 액세스를 구성하는 경우에도 오류가 발생합니다. 포트 80 및 32526이 필요합니다.

에이전트는 확장 패키지 및 보고 상태를 다운로드하는 데 사용할 수 있습니다. 예를 들어 확장을 설치할 때 GitHub에서 스크립트(사용자 지정 스크립트 확장)를 다운로드해야 하거나 Azure Storage(Azure Backup)에 대한 액세스 권한이 필요한 경우 다른 방화벽 또는 NSG(네트워크 보안 그룹) 포트를 열어야 합니다. 확장마다 고유한 애플리케이션이므로 요구 사항이 다릅니다. Azure Storage 또는 Microsoft Entra ID에 대한 액세스 권한이 필요한 확장의 경우 Azure NSG 서비스 태그를 사용하여 액세스를 허용할 수 있습니다.

Azure VM 에이전트는 에이전트 트래픽 요청의 리디렉션을 사용하도록 프록시 서버 지원을 제공하지 않습니다. VM 에이전트는 IP 주소 168.63.129.16을 통해 인터넷 또는 호스트의 리소스에 액세스하기 위해 사용자 지정 프록시(있는 경우)를 사용합니다.

VM 확장 검색

Azure VM에서 다양한 VM 확장을 사용할 수 있습니다. 전체 목록을 보려면 Get-AzVMExtensionImage PowerShell cmdlet을 사용합니다.

다음 명령은 미국 서부 지역 위치에서 사용 가능한 모든 VM 확장을 나열합니다.

Get-AzVmImagePublisher -Location "West US" |
Get-AzVMExtensionImageType |
Get-AzVMExtensionImage | Select Type, Version

이 명령은 다음 예제와 유사한 출력을 제공합니다.

Type                Version
----                -------
AcronisBackup       1.0.33
AcronisBackup       1.0.51
AcronisBackupLinux  1.0.33
AlertLogicLM        1.3.0.1
AlertLogicLM        1.3.0.0
AlertLogicLM        1.4.0.1

VM 확장 실행

Azure VM 확장은 기존 VM에서 실행됩니다. 이러한 기능은 이미 배포한 VM의 구성을 변경하거나 연결을 복구해야 할 때 유용합니다. 또한 VM 확장은 ARM 템플릿 배포와 함께 번들로 제공할 수 있습니다. ARM 템플릿에서 확장을 사용하면 배포 후 개입 없이 Azure VM을 배포하고 구성할 수 있습니다.

다음 방법을 사용하여 기존 VM에 대해 확장을 실행할 수 있습니다.

참고 항목

다음 예제 중 일부는 명령에서 "<placeholder>" 매개 변수 값을 사용합니다. 각 명령을 실행하기 전에 모든 "<placeholder>" 값을 구성의 특정 값으로 바꾸어야 합니다.

PowerShell

개별 확장을 실행하기 위한 몇 가지 PowerShell 명령이 존재합니다. 목록을 보려면 Get-command 명령을 사용하고 확장을 필터링합니다.

Get-Command Set-Az*Extension* -Module Az.Compute

이 명령은 다음 예제와 유사한 출력을 제공합니다.

CommandType     Name                                          Version    Source
-----------     ----                                          -------    ------
Cmdlet          Set-AzVMAccessExtension                       4.5.0      Az.Compute
Cmdlet          Set-AzVMADDomainExtension                     4.5.0      Az.Compute
Cmdlet          Set-AzVMAEMExtension                          4.5.0      Az.Compute
Cmdlet          Set-AzVMBackupExtension                       4.5.0      Az.Compute
Cmdlet          Set-AzVMBginfoExtension                       4.5.0      Az.Compute
Cmdlet          Set-AzVMChefExtension                         4.5.0      Az.Compute
Cmdlet          Set-AzVMCustomScriptExtension                 4.5.0      Az.Compute
Cmdlet          Set-AzVMDiagnosticsExtension                  4.5.0      Az.Compute
Cmdlet          Set-AzVMDiskEncryptionExtension               4.5.0      Az.Compute
Cmdlet          Set-AzVMDscExtension                          4.5.0      Az.Compute
Cmdlet          Set-AzVMExtension                             4.5.0      Az.Compute
Cmdlet          Set-AzVMSqlServerExtension                    4.5.0      Az.Compute
Cmdlet          Set-AzVmssDiskEncryptionExtension             4.5.0      Az.Compute

다음 예제에서는 사용자 지정 스크립트 확장을 사용하여 GitHub 리포지토리에서 대상 가상 머신에 스크립트를 다운로드한 후 스크립트를 실행합니다.

Set-AzVMCustomScriptExtension -ResourceGroupName "<myResourceGroup>" `
    -VMName "<myVM>" -Name "<myCustomScript>" `
    -FileUri "https://raw.githubusercontent.com/neilpeterson/nepeters-azure-templates/master/windows-custom-script-simple/support-scripts/Create-File.ps1" `
    -Run "Create-File.ps1" -Location "<myVMregion>"

다음 예제에서는 VMAccess 확장을 사용하여 Windows VM의 관리자 암호를 임시 암호로 다시 설정합니다. 이 코드를 실행한 후에는 첫 번째 로그인 시 암호를 다시 설정해야 합니다.

$cred=Get-Credential

Set-AzVMAccessExtension -ResourceGroupName "myResourceGroup" -VMName "myVM" -Name "myVMAccess" `
    -Location "myVMregion" -UserName $cred.GetNetworkCredential().Username `
    -Password $cred.GetNetworkCredential().Password -typeHandlerVersion "2.0"

Set-AzVMExtension 명령을 사용하여 VM 확장을 시작할 수 있습니다.

Azure Portal

Azure Portal을 통해 VM 확장을 기존 VM에 적용할 수 있습니다. 포털에서 VM을 선택하고 확장 + 애플리케이션을 선택한 다음, + 추가를 선택합니다. 사용 가능한 확장 목록에서 원하는 확장을 선택하고, 마법사의 지시를 따릅니다.

다음 예제에서는 Azure Portal에서 Microsoft 맬웨어 방지 확장을 설치하는 경우를 보여줍니다.

Screenshot of the dialog for installing the Microsoft Antimalware extension.

Azure 리소스 관리자 템플릿

VM 확장을 ARM 템플릿에 추가하고 템플릿 배포를 사용하여 실행할 수 있습니다. 템플릿을 사용하여 확장을 배포할 때 완전히 구성된 Azure 배포를 만들 수 있습니다.

다음 JSON 예제는 부하 분산된 VM 집합 및 Azure SQL 데이터베이스를 배포한 다음, 각 VM에 .NET Core 애플리케이션을 설치하는 ARM 템플릿입니다. VM 확장은 소프트웨어 설치를 관리합니다.

{
    "apiVersion": "2015-06-15",
    "type": "extensions",
    "name": "config-app",
    "location": "[resourceGroup().location]",
    "dependsOn": [
    "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'),copyindex())]",
    "[variables('musicstoresqlName')]"
    ],
    "tags": {
    "displayName": "config-app"
    },
    "properties": {
    "publisher": "Microsoft.Compute",
    "type": "CustomScriptExtension",
    "typeHandlerVersion": "1.9",
    "autoUpgradeMinorVersion": true,
    "settings": {
        "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-windows/scripts/configure-music-app.ps1"
        ]
    },
    "protectedSettings": {
        "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File configure-music-app.ps1 -user ',parameters('adminUsername'),' -password ',parameters('adminPassword'),' -sqlserver ',variables('musicstoresqlName'),'.database.windows.net')]"
    }
    }
}

ARM 템플릿을 만드는 방법에 대한 자세한 내용은 템플릿의 가상 머신을 참조하세요.

VM 확장 데이터 보호 지원

VM 확장을 실행하는 경우 자격 증명, 스토리지 계정 이름 및 액세스 키와 같은 중요한 정보를 포함해야 할 수도 있습니다. 많은 VM 확장에는 데이터를 암호화하고 대상 VM 내에서만 해독하는 보호된 구성이 포함되어 있습니다. 각 확장에는 보호되는 특정 구성 스키마가 있으며 각 스키마는 확장 관련 설명서에 자세히 나와 있습니다.

다음 JSON 예제에서는 Windows용 사용자 지정 스크립트 확장의 인스턴스를 보여 줍니다. 실행할 명령에는 자격 증명 세트가 포함됩니다. 다음 예제에서는 실행할 명령이 암호화되지 않습니다.

{
    "apiVersion": "2015-06-15",
    "type": "extensions",
    "name": "config-app",
    "location": "[resourceGroup().location]",
    "dependsOn": [
    "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'),copyindex())]",
    "[variables('musicstoresqlName')]"
    ],
    "tags": {
    "displayName": "config-app"
    },
    "properties": {
    "publisher": "Microsoft.Compute",
    "type": "CustomScriptExtension",
    "typeHandlerVersion": "1.9",
    "autoUpgradeMinorVersion": true,
    "settings": {
        "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-windows/scripts/configure-music-app.ps1"
        ],
        "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File configure-music-app.ps1 -user ',parameters('adminUsername'),' -password ',parameters('adminPassword'),' -sqlserver ',variables('musicstoresqlName'),'.database.windows.net')]"
    }
    }
}

commandToExecute 속성을 protected 구성으로 이동하면 다음 예제와 같이 실행 문자열을 보호하는 데 도움이 됩니다.

{
    "apiVersion": "2015-06-15",
    "type": "extensions",
    "name": "config-app",
    "location": "[resourceGroup().location]",
    "dependsOn": [
    "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'),copyindex())]",
    "[variables('musicstoresqlName')]"
    ],
    "tags": {
    "displayName": "config-app"
    },
    "properties": {
    "publisher": "Microsoft.Compute",
    "type": "CustomScriptExtension",
    "typeHandlerVersion": "1.9",
    "autoUpgradeMinorVersion": true,
    "settings": {
        "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-windows/scripts/configure-music-app.ps1"
        ]
    },
    "protectedSettings": {
        "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File configure-music-app.ps1 -user ',parameters('adminUsername'),' -password ',parameters('adminPassword'),' -sqlserver ',variables('musicstoresqlName'),'.database.windows.net')]"
    }
    }
}

확장을 사용하는 Azure IaaS(Infrastructure as a Service) VM의 인증서 콘솔에는 Windows Azure CRP 인증서 생성기 주체가 있는 인증서가 표시될 수 있습니다. 클래식 RDFE(RedDog Front End) VM에서 이러한 인증서에는 Windows Azure Service Management for Extensions라는 제목 이름이 있습니다.

이러한 인증서는 확장에서 사용하는 보호된 설정(암호, 기타 자격 증명)을 전송하는 동안 VM과 해당 호스트 간의 통신을 보호합니다. Azure 패브릭 컨트롤러는 인증서를 빌드하여 Azure VM 에이전트에 전달합니다. 매일 VM을 중지하고 시작하는 경우 패브릭 컨트롤러에서 새 인증서를 만들 수도 있습니다. 인증서는 컴퓨터의 개인 인증서 저장소에 저장됩니다. 이러한 인증서는 삭제할 수 있습니다. 필요한 경우 Azure VM 에이전트가 인증서를 다시 만듭니다.

에이전트 및 확장을 업데이트하는 방법

에이전트와 확장은 동일한 자동 업데이트 메커니즘을 공유합니다.

업데이트를 사용할 수 있고 자동 업데이트를 사용하도록 설정하면 확장 또는 다른 VM 모델이 변경된 후에만 업데이트가 VM에 설치됩니다. 변경 내용에는 다음이 포함될 수 있습니다.

  • 데이터 디스크
  • 확장
  • 확장 태그
  • 부팅 진단 컨테이너
  • 게스트 OS 암호
  • VM 크기
  • 네트워크 프로필

게시자는 다양한 시간에 지역에서 업데이트를 사용할 수 있도록 합니다. 다른 버전의 서로 다른 지역에 VM이 있을 수 있습니다.

참고 항목

일부 업데이트에는 추가 방화벽 규칙이 필요할 수 있습니다. 자세한 내용은 네트워크 액세스를 참조하세요.

VM에 배포된 확장 나열

다음 명령을 사용하여 VM에 배포된 확장을 나열할 수 있습니다.

$vm = Get-AzVM -ResourceGroupName "<myResourceGroup>" -VMName "<myVM>"
$vm.Extensions | select Publisher, VirtualMachineExtensionType, TypeHandlerVersion

이 명령은 다음 예제와 유사한 출력을 생성합니다.

Publisher             VirtualMachineExtensionType          TypeHandlerVersion
---------             ---------------------------          ------------------
Microsoft.Compute     CustomScriptExtension                1.9

에이전트 업데이트

Azure VM 에이전트에는 확장 처리 코드만 포함됩니다. Windows 프로비전 코드는 별개입니다. Azure VM 에이전트를 제거할 수 있습니다. Azure VM 에이전트의 자동 업데이트를 사용하지 않도록 설정할 수는 없습니다.

확장 처리 코드는 다음 작업을 담당합니다.

  • Azure 패브릭과 통신합니다.
  • 설치, 상태 보고, 개별 확장 업데이트, 확장 제거와 같은 VM 확장 작업을 처리합니다. 업데이트에는 보안 수정, 버그 수정 및 향상된 확장 처리 코드 기능이 포함됩니다.

실행 중인 버전을 확인하려면 Azure VM 에이전트 검색을 참조하세요.

확장 업데이트

확장 업데이트를 사용할 수 있고 자동 업데이트를 사용하도록 설정한 경우 VM 모델 변경이 실행되면 Azure VM 에이전트는 확장을 다운로드하고 업그레이드합니다.

자동 확장 업데이트는 부 버전 또는 핫픽스 중 하나입니다. 확장을 프로비전할 때 부 버전 업데이트를 옵트인하거나 옵트아웃할 수 있습니다. 다음 예제에서는 "autoUpgradeMinorVersion": true, 매개 변수를 사용하여 ARM 템플릿에서 부 버전을 자동으로 업그레이드하는 방법을 보여 줍니다.

    "properties": {
    "publisher": "Microsoft.Compute",
    "type": "CustomScriptExtension",
    "typeHandlerVersion": "1.9",
    "autoUpgradeMinorVersion": true,
    "settings": {
        "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-windows/scripts/configure-music-app.ps1"
        ]
    },

최신 부 릴리스 버그 수정을 받으려면 항상 확장 배포에서 자동 업데이트를 선택하는 것이 좋습니다. 보안 또는 주요 버그 수정이 포함된 핫픽스 업데이트는 옵트아웃할 수 없습니다.

자동 업데이트를 사용하지 않도록 설정하거나 주 버전을 업그레이드해야 하는 경우 Set-AzVMExtension 명령을 사용하고 대상 버전을 지정합니다.

확장 업데이트를 식별하는 방법

확장에 대한 업데이트를 식별할 수 있는 몇 가지 방법이 있습니다.

확장이 VM에서 autoUpgradeMinorVersion을 사용하여 설정되었는지 확인

VM 모델을 보고 autoUpgradeMinorVersion 매개 변수를 사용하여 확장이 프로비전되었는지 확인할 수 있습니다. VM 모델을 확인하려면 Get-AzVm 명령을 사용하고 다음과 같이 리소스 그룹 및 VM 이름을 제공합니다.

 $vm = Get-AzVm -ResourceGroupName "myResourceGroup" -VMName "myVM"
 $vm.Extensions

다음 예제 출력에서는 autoUpgradeMinorVersion 매개 변수가 true로 설정되어 있음을 보여 줍니다.

ForceUpdateTag              :
Publisher                   : Microsoft.Compute
VirtualMachineExtensionType : CustomScriptExtension
TypeHandlerVersion          : 1.9
AutoUpgradeMinorVersion     : True

autoUpgradeMinorVersion 이벤트가 발생한 경우 확인

확장에 대한 업데이트가 발생한 경우 C:\WindowsAzure\Logs\WaAppAgent.log에서 VM의 에이전트 로그를 검토할 수 있습니다.

다음 예제에서는 Microsoft.Compute.CustomScriptExtension 버전 1.8이 설치된 VM과 버전 1.9에서 사용할 수 있는 핫픽스를 보여 줍니다.

[INFO]  Getting plugin locations for plugin 'Microsoft.Compute.CustomScriptExtension'. Current Version: '1.8', Requested Version: '1.9'
[INFO]  Auto-Upgrade mode. Highest public version for plugin 'Microsoft.Compute.CustomScriptExtension' with requested version: '1.9', is: '1.9'

에이전트 사용 권한

해당 작업을 수행하려면 Azure VM 에이전트는 로컬 시스템 권한으로 실행해야 합니다.

VM 확장 문제 해결

각 VM 확장에는 특정 문제 해결 단계가 있을 수 있습니다. 예를 들어 사용자 지정 스크립트 확장을 사용하는 경우 확장이 실행된 VM에서 로컬로 스크립트 실행 세부 정보를 확인할 수 있습니다.

모든 VM 확장에 적용되는 문제 해결 단계는 다음과 같습니다.

  • Azure VM 에이전트 로그를 확인하려면 C:\WindowsAzure\Logs\WaAppAgent.log에서 확장이 프로비전된 경우 작업을 확인합니다.

  • C:\WindowsAzure\Logs\Plugins<extensionName>에서 확장 로그에 대한 자세한 내용을 확인합니다.

  • 오류 코드, 알려진 문제 및 기타 확장 관련 정보는 확장 관련 설명서의 문제 해결 섹션을 확인합니다.

  • 시스템 로그를 확인합니다. 패키지 관리자에 대한 단독 액세스가 필요한 다른 애플리케이션의 장기 실행 설치와 같이 확장을 방해했을 수 있는 다른 작업을 확인합니다.

  • VM에서 프로비전 상태가 실패한 기존 확장이 있는 경우 다른 새 확장은 설치되지 않습니다.

확장 오류에 대한 일반적인 이유

확장이 실패할 수 있는 몇 가지 일반적인 이유는 다음과 같습니다.

  • 확장의 실행 시간은 20분입니다. (예외는 90분이 있는 사용자 지정 스크립트, Chef 및 DSC입니다.) 배포가 이 시간을 초과하면 시간 제한으로 표시됩니다. 이 문제는 리소스가 부족한 VM이거나 확장에서 프로비전을 시도하는 동안 다른 VM 구성 또는 시작 작업에서 많은 양의 리소스를 사용하기 때문일 수 있습니다.

  • 최소 필수 조건이 충족되지 않습니다. 일부 확장은 HPC 이미지와 같은 VM SKU에 대해 종속됩니다. 확장에는 Azure Storage 또는 공용 서비스와의 통신과 같은 특정 네트워킹 액세스 요구 사항이 있을 수 있습니다. 다른 예로 패키지 리포지토리에 대한 액세스, 디스크 공간 부족 또는 보안 제한이 있을 수 있습니다.

  • 패키지 관리자 액세스는 배타적입니다. 경우에 따라 장기 실행 VM 구성 및 확장 설치는 모두 패키지 관리자에 대한 단독 액세스가 필요하므로 충돌할 수 있습니다.

확장 상태 보기

VM 확장이 VM에 대해 실행된 후에 Get-AzVM 명령을 사용하여 확장 상태를 반환합니다. Substatuses[0] 결과는 확장 프로비전이 성공했음을 보여 주며 이는 VM에 성공적으로 배포되었음을 의미합니다. Substatuses[1] 결과가 표시되면 VM 내에서 확장을 실행하지 못한 것입니다.

Get-AzVM -ResourceGroupName "myResourceGroup" -VMName "myVM" -Status

다음 예제와 유사하게 출력됩니다.

Extensions[0]           :
  Name                  : CustomScriptExtension
  Type                  : Microsoft.Compute.CustomScriptExtension
  TypeHandlerVersion    : 1.9
  Substatuses[0]        :
    Code                : ComponentStatus/StdOut/succeeded
    Level               : Info
    DisplayStatus       : Provisioning succeeded
    Message             : Windows PowerShell \nCopyright (C) Microsoft Corporation. All rights reserved.\n
  Substatuses[1]        :
    Code                : ComponentStatus/StdErr/succeeded
    Level               : Info
    DisplayStatus       : Provisioning succeeded
    Message             : The argument 'cseTest%20Scriptparam1.ps1' to the -File parameter does not exist. Provide the path to an existing '.ps1' file as an argument to the

-File parameter.
  Statuses[0]           :
    Code                : ProvisioningState/failed/-196608
    Level               : Error
    DisplayStatus       : Provisioning failed
    Message             : Finished executing command

또한 확장 실행 상태는 Azure Portal에서도 확인할 수 있습니다. VM을 선택하고, 확장을 선택한 다음, 원하는 확장을 선택합니다.

VM 확장 다시 실행

경우에 따라 VM 확장을 다시 실행해야 할 수도 있습니다. 확장을 다시 실행하려면 확장을 제거한 다음 원하는 실행 방법으로 확장을 다시 실행하면 됩니다. 확장을 제거하려면 다음과 같이 Remove-AzVMExtension 명령을 사용합니다.

Remove-AzVMExtension -ResourceGroupName "myResourceGroup" -VMName "myVM" -Name "myExtensionName"

또한 확장은 다음과 같이 Azure Portal에서도 제거할 수 있습니다. VM을 선택하고 확장을 선택한 다음, 원하는 확장을 선택합니다. 제거를 선택합니다.

일반적인 VM 확장 참조

다음 표에서는 VM 확장에 대한 몇 가지 일반적인 참조를 제공합니다.

확장 이름 설명
Windows용 사용자 지정 스크립트 확장 Azure 가상 머신에 대해 스크립트를 실행합니다.
Windows용 DSC 확장 가상 머신에 PowerShell이 원하는 상태 구성을 적용합니다.
Azure Diagnostics 확장 Azure Diagnostics를 관리합니다.
VMAccess 확장 사용자 및 자격 증명을 관리합니다.

다음 단계

VM 확장에 대한 자세한 내용은 Azure Virtual Machine 확장 및 기능을 참조하세요.