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 磁碟加密的機密VM 虛擬機,以及 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';

參數

-Caching

指定作業系統磁碟的快取模式。 有效值為:

  • ReadOnly
  • 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。 您也必須使用 WindowsLinux 參數,告訴 Azure 平臺 VHD 上的作業系統類型。 VhdUri 參數足以告訴 Azure 平臺要連接的磁碟位置。
  • FromImage。 指定此選項可從平臺映像或一般化使用者映像建立虛擬機。 在一般化使用者映像的情況下,您也需要指定 SourceImageUri 參數和 WindowsLinux 參數,以告訴 Azure 平臺操作系統磁碟 VHD 的位置和類型,而不是使用 Set-AzVMSourceImage Cmdlet。 在平臺映像的情況下, 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 磁碟刪除選項。 選項為 Detach、Delete

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

指定包含磁碟加密金鑰之 金鑰保存庫 的資源識別碼。

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

-DiskEncryptionSetId

指定客戶受控磁碟加密集的資源標識碼。 這隻能指定給受控磁碟。

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

指定包含金鑰加密金鑰之 金鑰保存庫 的資源識別碼。

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

指定受控磁碟的識別碼。

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資源標識碼。 可讓客戶為以 ConfidentialVmEncryptedWithCustomerKey 加密類型建立的磁碟加密集提供 ARM 識別碼。 這可讓客戶搭配機密 VM 使用客戶自控金鑰 (CMK) 加密。 Parameter 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)。 針對映像型虛擬機,此參數會指定要在指定平臺映像或使用者映射時建立的 VHD 檔案。 這是從中複製映像二進位大型物件 (BLOB) 以啟動虛擬機的位置。 針對以磁碟為基礎的虛擬機開機案例,此參數會指定虛擬機直接用來啟動的 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