Set-AzVMOSDisk

Establece las propiedades del disco del sistema operativo en una máquina virtual.

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

El cmdlet Set-AzVMOSDisk establece las propiedades del disco del sistema operativo en una máquina virtual.

Ejemplos

Ejemplo 1: Establecimiento de propiedades en una máquina virtual desde la imagen de la plataforma

$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"

El primer comando obtiene el conjunto de disponibilidad denominado AvailabilitySet13 en el grupo de recursos denominado ResourceGroup11 y, a continuación, almacena ese objeto en la variable $AvailabilitySet. El segundo comando crea un objeto de máquina virtual y, a continuación, lo almacena en la variable $VirtualMachine. El comando asigna un nombre y un tamaño a la máquina virtual. La máquina virtual pertenece al conjunto de disponibilidad almacenado en $AvailabilitySet. El comando final establece las propiedades de la máquina virtual en $VirtualMachine.

Ejemplo 2: establece las propiedades de una máquina virtual de la imagen de usuario generalizada

$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"

El primer comando obtiene el conjunto de disponibilidad denominado AvailabilitySet13 en el grupo de recursos denominado ResourceGroup11 y almacena ese objeto en la variable $AvailabilitySet. El segundo comando crea un objeto de máquina virtual y lo almacena en la variable $VirtualMachine. El comando asigna un nombre y un tamaño a la máquina virtual. La máquina virtual pertenece al conjunto de disponibilidad almacenado en $AvailabilitySet. El comando final establece las propiedades de la máquina virtual en $VirtualMachine.

Ejemplo 3: Establece las propiedades de una máquina virtual a partir de una imagen de usuario especializada

$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"

El primer comando obtiene el conjunto de disponibilidad denominado AvailabilitySet13 en el grupo de recursos denominado ResourceGroup11 y almacena ese objeto en la variable $AvailabilitySet. El segundo comando crea un objeto de máquina virtual y lo almacena en la variable $VirtualMachine. El comando asigna un nombre y un tamaño a la máquina virtual. La máquina virtual pertenece al conjunto de disponibilidad almacenado en $AvailabilitySet. El comando final establece las propiedades de la máquina virtual en $VirtualMachine.

Ejemplo 4: Establecimiento de la configuración de cifrado de disco en un disco del sistema operativo de máquina virtual

$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"

En este ejemplo se establece la configuración de cifrado de disco en un disco del sistema operativo de máquina virtual.

Ejemplo 5: Creación de una máquina virtual ConfidentialVM con cifrado de disco del sistema operativo de máquina virtual de DiskWithVMGuestState y cifrado del conjunto de cifrado de disco de ConfidentialVmEncryptedWithCustomerKey.

# 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';

Parámetros

-Caching

Especifica el modo de almacenamiento en caché del disco del sistema operativo. Los valores válidos son:

  • ReadOnly
  • ReadWrite El valor predeterminado es ReadWrite. Cambiar el valor de almacenamiento en caché hace que la máquina virtual se reinicie. Esta configuración afecta al rendimiento del disco.
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

Especifica si este cmdlet crea un disco en la máquina virtual a partir de una imagen de usuario o plataforma, o conecta un disco existente. Los valores válidos son:

  • Adjuntar. Especifique esta opción para crear una máquina virtual a partir de un disco especializado. Al especificar esta opción, no especifique el parámetro SourceImageUri . En su lugar, use el cmdlet Set-AzVMSourceImage. También debe usar los parámetros de Windows o Linux para indicar a la plataforma azure el tipo del sistema operativo en el disco duro virtual. El parámetro VhdUri es suficiente para indicar a la plataforma azure la ubicación del disco que se va a conectar.
  • FromImage. Especifique esta opción para crear una máquina virtual a partir de una imagen de plataforma o una imagen de usuario generalizada. En el caso de una imagen de usuario generalizada, también debe especificar el parámetro SourceImageUri y los parámetros de Windows o Linux para indicar a la plataforma Azure la ubicación y el tipo del VHD del disco del sistema operativo en lugar de usar el cmdlet Set-AzVMSourceImage . En el caso de una imagen de plataforma, el parámetro VhdUri es suficiente.
  • Vacía.
Type:String
Position:5
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DefaultProfile

Las credenciales, la cuenta, el inquilino y la suscripción que se usan para la comunicación con Azure.

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

-DeleteOption

Especifica la opción De eliminación de disco del sistema operativo después de la eliminación de la máquina virtual. Las opciones son Desasociar, Eliminar

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

-DiffDiskPlacement

Especifica la ubicación del disco efímero para el disco del sistema operativo. El usuario puede usar esta propiedad en la solicitud para elegir la ubicación, es decir, el disco de caché o el espacio en disco del recurso para el aprovisionamiento de discos del sistema operativo efímero. Para obtener más información sobre los requisitos de tamaño de disco del sistema operativo efímero, consulte Requisitos de tamaño de disco del sistema operativo efímero para máquinas virtuales Windows en https://learn.microsoft.com/azure/virtual-machines/windows/ephemeral-os-disks#size-requirements y máquinas virtuales Linux en https://learn.microsoft.com/azure/virtual-machines/linux/ephemeral-os-disks#size-requirements. Este parámetro solo se puede usar si el parámetro DiffDiskSetting está establecido en "Local".

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

-DiffDiskSetting

Especifica la configuración de disco de diferenciación para el disco del sistema operativo.

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

-DiskEncryptionKeyUrl

Especifica la ubicación de la clave de cifrado de disco.

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

-DiskEncryptionKeyVaultId

Especifica el identificador de recurso de Key Vault que contiene la clave de cifrado de disco.

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

-DiskEncryptionSetId

Especifica el identificador de recurso del conjunto de cifrado de disco administrado por el cliente. Esto solo se puede especificar para el disco administrado.

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

-DiskSizeInGB

Especifica el tamaño, en GB, del disco del sistema operativo.

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

-KeyEncryptionKeyUrl

Especifica la ubicación de la clave de cifrado de claves.

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

-KeyEncryptionKeyVaultId

Especifica el identificador de recurso del almacén de claves que contiene la clave de cifrado de claves.

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

-Linux

Indica que el sistema operativo de la imagen de usuario es Linux. Especifique este parámetro para la implementación de máquinas virtuales basadas en imágenes de usuario.

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

-ManagedDiskId

Especifica el identificador de un disco administrado.

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

-Name

Especifica el nombre del disco del sistema operativo.

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

-SecureVMDiskEncryptionSet

Id. de recurso de ARM para el conjunto de cifrado de disco. Permite al cliente proporcionar el identificador de ARM para el conjunto de cifrado de disco creado con el tipo de cifrado ConfidentialVmEncryptedWithCustomerKey. Esto permitirá al cliente usar el cifrado de clave administrada por el cliente (CMK) con una máquina virtual confidencial. El valor de Parameter SecurityEncryptionType debe ser DiskwithVMGuestState.

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

-SecurityEncryptionType

Establece el valor SecurityEncryptionType en el disco administrado de la máquina virtual. Entre los valores posibles se incluyen: 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

Especifica el URI del disco duro virtual para escenarios de imagen de usuario.

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

-StorageAccountType

Especifica el tipo de cuenta de almacenamiento del disco administrado.

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

-VhdUri

Especifica el identificador uniforme de recursos (URI) de un disco duro virtual (VHD). Para una máquina virtual basada en imágenes, este parámetro especifica el archivo VHD que se va a crear cuando se especifica una imagen de plataforma o una imagen de usuario. Esta es la ubicación desde la que se copia el objeto binario binario de imagen (BLOB) para iniciar la máquina virtual. Para un escenario de arranque de máquina virtual basado en disco, este parámetro especifica el archivo VHD que la máquina virtual usa directamente para iniciarse.

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

-VM

Especifica el objeto de máquina virtual local en el que se van a establecer las propiedades del disco del sistema operativo. Para obtener un objeto de máquina virtual, use el cmdlet Get-AzVM.

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

-Windows

Indica que el sistema operativo de la imagen de usuario es Windows.

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

-WriteAccelerator

Especifica si WriteAccelerator debe estar habilitado o deshabilitado en el disco del sistema operativo.

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

Entradas

PSVirtualMachine

String

Salidas

PSVirtualMachine