Set-AzVMOSDisk

가상 머신에서 운영 체제 디스크 속성을 설정합니다.

Syntax

Set-AzVMOSDisk
   [-VM] <PSVirtualMachine>
   [[-Name] <String>]
   [[-VhdUri] <String>]
   [[-Caching] <CachingTypes>]
   [[-SourceImageUri] <String>]
   [[-CreateOption] <String>]
   [-DiskSizeInGB <Int32>]
   [-ManagedDiskId <String>]
   [-StorageAccountType <String>]
   [-DiskEncryptionSetId <String>]
   [-WriteAccelerator]
   [-DiffDiskSetting <String>]
   [-DiffDiskPlacement <String>]
   [-DeleteOption <String>]
   [-SecurityEncryptionType <String>]
   [-SecureVMDiskEncryptionSet <String>]
   [-DefaultProfile <IAzureContextContainer>]
   [<CommonParameters>]
Set-AzVMOSDisk
   [-VM] <PSVirtualMachine>
   [[-Name] <String>]
   [[-VhdUri] <String>]
   [[-Caching] <CachingTypes>]
   [[-SourceImageUri] <String>]
   [[-CreateOption] <String>]
   [-Windows]
   [-DiskSizeInGB <Int32>]
   [-ManagedDiskId <String>]
   [-StorageAccountType <String>]
   [-DiskEncryptionSetId <String>]
   [-WriteAccelerator]
   [-DiffDiskSetting <String>]
   [-DiffDiskPlacement <String>]
   [-DeleteOption <String>]
   [-SecurityEncryptionType <String>]
   [-SecureVMDiskEncryptionSet <String>]
   [-DefaultProfile <IAzureContextContainer>]
   [<CommonParameters>]
Set-AzVMOSDisk
   [-VM] <PSVirtualMachine>
   [[-Name] <String>]
   [[-VhdUri] <String>]
   [[-Caching] <CachingTypes>]
   [[-SourceImageUri] <String>]
   [[-CreateOption] <String>]
   [-Windows]
   [-DiskEncryptionKeyUrl] <String>
   [-DiskEncryptionKeyVaultId] <String>
   [[-KeyEncryptionKeyUrl] <String>]
   [[-KeyEncryptionKeyVaultId] <String>]
   [-DiskSizeInGB <Int32>]
   [-ManagedDiskId <String>]
   [-StorageAccountType <String>]
   [-DiskEncryptionSetId <String>]
   [-WriteAccelerator]
   [-DiffDiskSetting <String>]
   [-DiffDiskPlacement <String>]
   [-DeleteOption <String>]
   [-SecurityEncryptionType <String>]
   [-SecureVMDiskEncryptionSet <String>]
   [-DefaultProfile <IAzureContextContainer>]
   [<CommonParameters>]
Set-AzVMOSDisk
   [-VM] <PSVirtualMachine>
   [[-Name] <String>]
   [[-VhdUri] <String>]
   [[-Caching] <CachingTypes>]
   [[-SourceImageUri] <String>]
   [[-CreateOption] <String>]
   [-Linux]
   [-DiskSizeInGB <Int32>]
   [-ManagedDiskId <String>]
   [-StorageAccountType <String>]
   [-DiskEncryptionSetId <String>]
   [-WriteAccelerator]
   [-DiffDiskSetting <String>]
   [-DiffDiskPlacement <String>]
   [-DeleteOption <String>]
   [-SecurityEncryptionType <String>]
   [-SecureVMDiskEncryptionSet <String>]
   [-DefaultProfile <IAzureContextContainer>]
   [<CommonParameters>]
Set-AzVMOSDisk
   [-VM] <PSVirtualMachine>
   [[-Name] <String>]
   [[-VhdUri] <String>]
   [[-Caching] <CachingTypes>]
   [[-SourceImageUri] <String>]
   [[-CreateOption] <String>]
   [-Linux]
   [-DiskEncryptionKeyUrl] <String>
   [-DiskEncryptionKeyVaultId] <String>
   [[-KeyEncryptionKeyUrl] <String>]
   [[-KeyEncryptionKeyVaultId] <String>]
   [-DiskSizeInGB <Int32>]
   [-ManagedDiskId <String>]
   [-StorageAccountType <String>]
   [-DiskEncryptionSetId <String>]
   [-WriteAccelerator]
   [-DiffDiskSetting <String>]
   [-DiffDiskPlacement <String>]
   [-DeleteOption <String>]
   [-SecurityEncryptionType <String>]
   [-SecureVMDiskEncryptionSet <String>]
   [-DefaultProfile <IAzureContextContainer>]
   [<CommonParameters>]

Description

Set-AzVMOSDisk cmdlet은 가상 머신에서 운영 체제 디스크 속성을 설정합니다.

예제

예제 1: 플랫폼 이미지에서 가상 머신의 속성 설정

$AvailabilitySet = Get-AzAvailabilitySet -ResourceGroupName "ResourceGroup11" -Name "AvailabilitySet13" 
$VirtualMachine = New-AzVMConfig -VMName "VirtualMachine17" -VMSize "Standard_A1" -AvailabilitySetID $AvailabilitySet.Id 
Set-AzVMOSDisk -VM $VirtualMachine -Name "OsDisk12" -VhdUri "os.vhd" -Caching ReadWrite
$VirtualMachine = Set-AzVMOperatingSystem -VM $VirtualMachine -Linux -ComputerName "MainComputer" -Credential (Get-Credential) 
$VirtualMachine = Set-AzVMSourceImage -VM $VirtualMachine -PublisherName "Canonical" -Offer "UbuntuServer" -Skus "15.10" -Version "latest"
$VirtualMachine = Set-AzVMOSDisk -VM $VirtualMachine -Name "osDisk.vhd" -VhdUri "https://mystorageaccount.blob.core.windows.net/disks/" -CreateOption FromImage
New-AzVM -VM $VirtualMachine -ResourceGroupName "ResourceGroup11"

첫 번째 명령은 ResourceGroup11이라는 리소스 그룹에서 AvailabilitySet13이라는 가용성 집합을 가져오고 해당 개체를 $AvailabilitySet 변수에 저장합니다. 두 번째 명령은 가상 머신 개체를 만든 다음 $VirtualMachine 변수에 저장합니다. 이 명령은 가상 머신에 이름과 크기를 할당합니다. 가상 머신은 $AvailabilitySet 저장된 가용성 집합에 속합니다. 마지막 명령은 $VirtualMachine 가상 머신의 속성을 설정합니다.

예제 2: 일반화된 사용자 이미지에서 가상 머신의 속성 설정

$AvailabilitySet = Get-AzAvailabilitySet -ResourceGroupName "ResourceGroup11" -Name "AvailabilitySet13" 
$VirtualMachine = New-AzVMConfig -VMName "VirtualMachine17" -VMSize "Standard_A1"
$VirtualMachine = Set-AzVMOperatingSystem -VM $VirtualMachine -Linux -ComputerName "MainComputer" -Credential (Get-Credential)
$VirtualMachine = Set-AzVMOSDisk -VM $VirtualMachine -Name "osDisk.vhd" -SourceImageUri "https://mystorageaccount.blob.core.windows.net/vhds/myOSImage.vhd" -VhdUri "https://mystorageaccount.blob.core.windows.net/disks/" -CreateOption fromImage -Linux
New-AzVM -VM $VirtualMachine -ResourceGroupName "ResourceGroup11"

첫 번째 명령은 ResourceGroup11이라는 리소스 그룹에서 AvailabilitySet13이라는 가용성 집합을 가져오고 해당 개체를 $AvailabilitySet 변수에 저장합니다. 두 번째 명령은 가상 머신 개체를 만들고 $VirtualMachine 변수에 저장합니다. 이 명령은 가상 머신에 이름과 크기를 할당합니다. 가상 머신은 $AvailabilitySet 저장된 가용성 집합에 속합니다. 마지막 명령은 $VirtualMachine 가상 머신의 속성을 설정합니다.

예제 3: 특수 사용자 이미지에서 가상 머신의 속성 설정

$AvailabilitySet = Get-AzAvailabilitySet -ResourceGroupName "ResourceGroup11" -Name "AvailabilitySet13" 
$VirtualMachine = New-AzVMConfig -VMName "VirtualMachine17" -VMSize "Standard_A1"
$VirtualMachine = Set-AzVMOSDisk -VM $VirtualMachine -Name "osDisk.vhd" -VhdUri "https://mystorageaccount.blob.core.windows.net/disks/" -CreateOption Attach -Linux
New-AzVM -VM $VirtualMachine -ResourceGroupName "ResourceGroup11"

첫 번째 명령은 ResourceGroup11이라는 리소스 그룹에서 AvailabilitySet13이라는 가용성 집합을 가져오고 해당 개체를 $AvailabilitySet 변수에 저장합니다. 두 번째 명령은 가상 머신 개체를 만들고 $VirtualMachine 변수에 저장합니다. 이 명령은 가상 머신에 이름과 크기를 할당합니다. 가상 머신은 $AvailabilitySet 저장된 가용성 집합에 속합니다. 마지막 명령은 $VirtualMachine 가상 머신의 속성을 설정합니다.

예제 4: 가상 머신 운영 체제 디스크에서 디스크 암호화 설정

$VirtualMachine = New-AzVMConfig -VMName "VirtualMachine17" -VMSize "Standard_A1"
$VirtualMachine = Set-AzVMOSDisk -VM $VirtualMachine -Name "OsDisk12" -VhdUri "os.vhd" -Caching ReadWrite -Windows -CreateOption "Attach" -DiskEncryptionKeyUrl "https://mytestvault.vault.azure.net/secrets/Test1/514ceb769c984379a7e0230bddaaaaaa" -DiskEncryptionKeyVaultId "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myresourcegroup/providers/Microsoft.KeyVault/vaults/mytestvault"
New-AzVM -VM $VirtualMachine -ResourceGroupName " ResourceGroup11"

다음은 가상 머신 운영 체제 디스크의 디스크 암호화 설정을 설정하는 예제입니다.

예제 5: DiskWithVMGuestState의 VM OS 디스크 암호화 및 ConfidentialVmEncryptedWithCustomerKey의 디스크 암호화 집합 암호화를 사용하여 ConfidentialVM 가상 머신을 만듭니다.

# Create Resource Group
$Location = 'northeurope';
New-AzResourceGroup -Name $ResourceGroupName -Location $Location;

$vmSize = "Standard_DC2as_v5";        
$identityType = "SystemAssigned";
$secureEncryptGuestState = "DiskWithVMGuestState";
$vmSecurityType = "ConfidentialVM";
$securePassword = "Password" | ConvertTo-SecureString -AsPlainText -Force; 
$cred = New-Object System.Management.Automation.PSCredential ($user, $securePassword);

# Create Key Vault
New-AzKeyVault -Name $keyVaultName -Location $Location -ResourceGroupName $ResourceGroupName -Sku Premium -EnablePurgeProtection -EnabledForDiskEncryption;

$cvmAgent = Get-AzADServicePrincipal -ApplicationId 'bf7b6499-ff71-4aa2-97a4-f372087be7f0';
Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ResourceGroupName $ResourceGroupName -ObjectId $cvmAgent.id -PermissionsToKeys get,release;

# Add Key vault Key
$KeyName = "keyname";
$KeySize = 3072;

Add-AzKeyVaultKey -VaultName $kvname -Name $KeyName -Size $KeySize -KeyOps wrapKey,unwrapKey -KeyType RSA -Destination HSM -Exportable -UseDefaultCVMPolicy;
        
# Capture Key Vault and Key details
$encryptionKeyVaultId = (Get-AzKeyVault -VaultName $keyVaultName -ResourceGroupName $ResourceGroupName).ResourceId;
$encryptionKeyURL = (Get-AzKeyVaultKey -VaultName $keyVaultName -KeyName $keyName).Key.Kid;

# Create new DES Config and Disk Encryption Set
$diskEncryptionType = "ConfidentialVmEncryptedWithCustomerKey";
$desConfig = New-AzDiskEncryptionSetConfig -Location $loc -SourceVaultId $encryptionKeyVaultId -KeyUrl $encryptionKeyURL -IdentityType SystemAssigned -EncryptionType $diskEncryptionType;
New-AzDiskEncryptionSet -ResourceGroupName $ResourceGroupName -Name $desName -DiskEncryptionSet $desConfig;
        
$diskencset = Get-AzDiskEncryptionSet -ResourceGroupName $rgname -Name $desName;
        
# Assign DES Access Policy to key vault
$desIdentity = (Get-AzDiskEncryptionSet -Name $desName -ResourceGroupName $ResourceGroupName).Identity.PrincipalId;
        
Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ResourceGroupName $ResourceGroupName -ObjectId $desIdentity -PermissionsToKeys wrapKey,unwrapKey,get -BypassObjectIdValidation;
        
$VirtualMachine = New-AzVMConfig -VMName $VMName -VMSize $vmSize;
$VirtualMachine = Set-AzVMOperatingSystem -VM $VirtualMachine -Windows -ComputerName $computerName -Credential $cred -ProvisionVMAgent -EnableAutoUpdate;
$VirtualMachine = Set-AzVMSourceImage -VM $VirtualMachine -PublisherName 'MicrosoftWindowsServer' -Offer 'windowsserver' -Skus '2022-datacenter-smalldisk-g2' -Version "latest";
        
$subnet = New-AzVirtualNetworkSubnetConfig -Name ($subnetPrefix + $ResourceGroupName) -AddressPrefix "10.0.0.0/24";
$vnet = New-AzVirtualNetwork -Force -Name ($vnetPrefix + $ResourceGroupName) -ResourceGroupName $ResourceGroupName -Location $loc -AddressPrefix "10.0.0.0/16" -Subnet $subnet;
$vnet = Get-AzVirtualNetwork -Name ($vnetPrefix + $ResourceGroupName) -ResourceGroupName $ResourceGroupName;
$subnetId = $vnet.Subnets[0].Id;
$pubip = New-AzPublicIpAddress -Force -Name ($pubIpPrefix + $ResourceGroupName) -ResourceGroupName $ResourceGroupName -Location $loc -AllocationMethod Dynamic -DomainNameLabel $domainNameLabel2;
$pubip = Get-AzPublicIpAddress -Name ($pubIpPrefix + $ResourceGroupName) -ResourceGroupName $ResourceGroupName;
$pubipId = $pubip.Id;
$nic = New-AzNetworkInterface -Force -Name ($nicPrefix + $ResourceGroupName) -ResourceGroupName $ResourceGroupName -Location $loc -SubnetId $subnetId -PublicIpAddressId $pubip.Id;
$nic = Get-AzNetworkInterface -Name ($nicPrefix + $ResourceGroupName) -ResourceGroupName $ResourceGroupName;
$nicId = $nic.Id;

$VirtualMachine = Add-AzVMNetworkInterface -VM $VirtualMachine -Id $nicId;

# Set VM SecurityType and connect to DES
$VirtualMachine = Set-AzVMOSDisk -VM $VirtualMachine -StorageAccountType "StandardSSD_LRS" -CreateOption "FromImage" -SecurityEncryptionType $secureEncryptGuestState -SecureVMDiskEncryptionSet $diskencset.Id;
$VirtualMachine = Set-AzVmSecurityProfile -VM $VirtualMachine -SecurityType $vmSecurityType;
$VirtualMachine = Set-AzVmUefi -VM $VirtualMachine -EnableVtpm $true -EnableSecureBoot $true;

New-AzVM -ResourceGroupName $ResourceGroupName -Location $loc -Vm $VirtualMachine;
$vm = Get-AzVm -ResourceGroupName $ResourceGroupName -Name $vmname;

# Verify the SecurityEncryptionType value on the disk.
# $vm.StorageProfile.OsDisk.ManagedDisk.SecurityProfile.SecurityEncryptionType == 'DiskWithVMGuestState';

매개 변수

-Caching

운영 체제 디스크의 캐싱 모드를 지정합니다. 유효한 값은 다음과 같습니다.

  • 읽기 전용
  • ReadWrite 기본값은 ReadWrite입니다. 캐싱 값을 변경하면 가상 머신이 다시 시작됩니다. 이 설정은 디스크의 성능에 영향을 줍니다.
Type:Nullable<T>[CachingTypes]
Accepted values:None, ReadOnly, ReadWrite
Position:3
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CreateOption

이 cmdlet은 플랫폼 또는 사용자 이미지에서 가상 머신에 디스크를 만들거나 기존 디스크를 연결할지 여부를 지정합니다. 유효한 값은 다음과 같습니다.

  • 연결. 특수 디스크에서 가상 머신을 만들려면 이 옵션을 지정합니다. 이 옵션을 지정할 때 SourceImageUri 매개 변수를 지정하지 마세요. 대신 Set-AzVMSourceImage cmdlet을 사용합니다. 또한 Windows 또는 Linux 매개 변수를 사용하여 Azure 플랫폼에 VHD의 운영 체제 유형을 알려야 합니다. VhdUri 매개 변수는 Azure 플랫폼에 연결할 디스크의 위치를 알리기에 충분합니다.
  • FromImage. 플랫폼 이미지 또는 일반화된 사용자 이미지에서 가상 머신을 만들려면 이 옵션을 지정합니다. 일반화된 사용자 이미지의 경우 Set-AzVMSourceImage cmdlet을 사용하는 대신 Azure 플랫폼에 운영 체제 디스크 VHD의 위치 및 유형을 알리기 위해 SourceImageUri 매개 변수와 Windows 또는 Linux 매개 변수를 지정해야 합니다. 플랫폼 이미지 의 경우 VhdUri 매개 변수로 충분합니다.
  • 비어 있음.
Type:String
Position:5
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DefaultProfile

Azure와의 통신에 사용되는 자격 증명, 계정, 테넌트 및 구독입니다.

Type:IAzureContextContainer
Aliases:AzContext, AzureRmContext, AzureCredential
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DeleteOption

VM 삭제 후 OS 디스크 삭제 옵션을 지정합니다. 옵션은 분리, 삭제입니다.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-DiffDiskPlacement

운영 체제 디스크에 대한 임시 디스크 배치를 지정합니다. 이 속성은 임시 OS 디스크 프로비저닝을 위한 캐시 디스크 또는 리소스 디스크 공간과 같은 위치를 선택하기 위해 요청의 사용자가 사용할 수 있습니다. 임시 OS 디스크 크기 요구 사항에 대한 자세한 내용은 Windows VM 및 Linux VM https://learn.microsoft.com/azure/virtual-machines/windows/ephemeral-os-disks#size-requirementshttps://learn.microsoft.com/azure/virtual-machines/linux/ephemeral-os-disks#size-requirements의 사용 후 삭제 OS 디스크 크기 요구 사항을 참조하세요. 이 매개 변수는 매개 변수 DiffDiskSetting이 'Local'으로 설정된 경우에만 사용할 수 있습니다.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-DiffDiskSetting

운영 체제 디스크에 대한 차이점 디스크 설정을 지정합니다.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-DiskEncryptionKeyUrl

디스크 암호화 키의 위치를 지정합니다.

Type:String
Position:7
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-DiskEncryptionKeyVaultId

디스크 암호화 키를 포함하는 Key Vault의 리소스 ID를 지정합니다.

Type:String
Position:8
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-DiskEncryptionSetId

고객 관리 디스크 암호화 집합의 리소스 ID를 지정합니다. 관리 디스크에 대해서만 지정할 수 있습니다.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DiskSizeInGB

운영 체제 디스크의 크기(GB)를 지정합니다.

Type:Nullable<T>[Int32]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-KeyEncryptionKeyUrl

키 암호화 키의 위치를 지정합니다.

Type:String
Position:9
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-KeyEncryptionKeyVaultId

키 암호화 키를 포함하는 Key Vault의 리소스 ID를 지정합니다.

Type:String
Position:10
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Linux

사용자 이미지의 운영 체제가 Linux임을 나타냅니다. 사용자 이미지 기반 가상 머신 배포에 대해 이 매개 변수를 지정합니다.

Type:SwitchParameter
Position:6
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ManagedDiskId

관리 디스크의 ID를 지정합니다.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Name

운영 체제 디스크의 이름을 지정합니다.

Type:String
Aliases:OSDiskName, DiskName
Position:1
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SecureVMDiskEncryptionSet

디스크 암호화 집합에 대한 ARM 리소스 ID입니다. 고객이 ConfidentialVmEncryptedWithCustomerKey 암호화 유형으로 만든 디스크 암호화 집합에 대한 ARM ID를 제공할 수 있습니다. 이렇게 하면 고객이 기밀 VM에서 CMK(고객 관리형 키) 암호화를 사용할 수 있습니다. SecurityEncryptionType 매개 변수 값은 DiskwithVMGuestState여야 합니다.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-SecurityEncryptionType

VM의 관리 디스크에서 SecurityEncryptionType 값을 설정합니다. 가능한 값은 TrustedLaunch, ConfidentialVM_DiskEncryptedWithCustomerKey, ConfidentialVM_VMGuestStateOnlyEncryptedWithPlatformKey, ConfidentialVM_DiskEncryptedWithPlatformKey

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-SourceImageUri

사용자 이미지 시나리오에 대한 VHD의 URI를 지정합니다.

Type:String
Aliases:SourceImage
Position:4
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-StorageAccountType

관리 디스크의 스토리지 계정 유형을 지정합니다.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-VhdUri

VHD(가상 하드 디스크)의 URI(Uniform Resource Identifier)를 지정합니다. 이미지 기반 가상 머신의 경우 이 매개 변수는 플랫폼 이미지 또는 사용자 이미지를 지정할 때 만들 VHD 파일을 지정합니다. 가상 머신을 시작하기 위해 이미지 BLOB(Binary Large Object)이 복사되는 위치입니다. 디스크 기반 가상 머신 부팅 시나리오의 경우 이 매개 변수는 가상 머신이 시작에 직접 사용하는 VHD 파일을 지정합니다.

Type:String
Aliases:OSDiskVhdUri, DiskVhdUri
Position:2
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-VM

운영 체제 디스크 속성을 설정할 로컬 가상 머신 개체를 지정합니다. 가상 머신 개체를 가져오려면 Get-AzVM cmdlet을 사용합니다.

Type:PSVirtualMachine
Aliases:VMProfile
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Windows

사용자 이미지의 운영 체제가 Windows임을 나타냅니다.

Type:SwitchParameter
Position:6
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WriteAccelerator

OS 디스크에서 WriteAccelerator를 사용하도록 설정하거나 사용하지 않도록 설정할지 여부를 지정합니다.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

입력

PSVirtualMachine

String

출력

PSVirtualMachine