Set-AzVMOSDisk
設定虛擬機上的作業系統磁碟屬性。
語法
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 = ConvertTo-SecureString -String "****" -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 '00001111-aaaa-2222-bbbb-3333cccc4444';
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。 變更快取值會導致虛擬機重新啟動。 此設定會影響磁碟的效能。
類型: | Nullable<T>[CachingTypes] |
接受的值: | None, ReadOnly, ReadWrite |
Position: | 3 |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-CreateOption
指定此 Cmdlet 是否從平台或使用者映像在虛擬機中建立磁碟,或連接現有的磁碟。 有效值為:
- 附加。 指定此選項可從特製化磁碟建立虛擬機。 當您指定此選項時,請勿指定 SourceImageUri 參數。 請改用 Set-AzVMSourceImage Cmdlet。 您也必須使用 Windows 或 Linux 參數,告訴 Azure 平臺 VHD 上的作業系統類型。 VhdUri 參數足以告訴 Azure 平臺要連接的磁碟位置。
- FromImage。 指定此選項可從平臺映像或一般化使用者映像建立虛擬機。 在一般化使用者映像的情況下,您也需要指定 SourceImageUri 參數和 Windows 或 Linux 參數,以告訴 Azure 平臺操作系統磁碟 VHD 的位置和類型,而不是使用 Set-AzVMSourceImage Cmdlet。 在平臺映像的情況下, VhdUri 參數就已足夠。
- 空白。
類型: | String |
Position: | 5 |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-DefaultProfile
用於與 azure 通訊的認證、帳戶、租用戶和訂用帳戶。
類型: | IAzureContextContainer |
別名: | AzContext, AzureRmContext, AzureCredential |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-DeleteOption
指定 VM 刪除之後的 OS 磁碟刪除選項。 選項為 Detach、Delete
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-DiffDiskPlacement
指定作業系統磁碟的暫時磁碟位置。 用戶可以在要求中使用這個屬性來選擇位置,也就是快取磁碟或資源磁碟空間以進行暫時 OS 磁碟布建。 如需暫時 OS 磁碟大小需求的詳細資訊,請參閱 在的 Windows VM 和 Linux VM https://learn.microsoft.com/azure/virtual-machines/windows/ephemeral-os-disks#size-requirements https://learn.microsoft.com/azure/virtual-machines/linux/ephemeral-os-disks#size-requirements的暫時 OS 磁碟大小需求。 只有在參數 DiffDiskSetting 設定為 'Local' 時,才能使用此參數。
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-DiffDiskSetting
指定作業系統磁碟的差異磁碟設定。
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-DiskEncryptionKeyUrl
指定磁碟加密金鑰的位置。
類型: | String |
Position: | 7 |
預設值: | None |
必要: | True |
接受管線輸入: | False |
接受萬用字元: | False |
-DiskEncryptionKeyVaultId
指定包含磁碟加密金鑰之 金鑰保存庫 的資源識別碼。
類型: | String |
Position: | 8 |
預設值: | None |
必要: | True |
接受管線輸入: | False |
接受萬用字元: | False |
-DiskEncryptionSetId
指定客戶受控磁碟加密集的資源標識碼。 這隻能指定給受控磁碟。
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-DiskSizeInGB
指定作業系統磁碟的大小,以 GB 為單位。
類型: | Nullable<T>[Int32] |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-KeyEncryptionKeyUrl
指定金鑰加密金鑰的位置。
類型: | String |
Position: | 9 |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-KeyEncryptionKeyVaultId
指定包含金鑰加密金鑰之 金鑰保存庫 的資源識別碼。
類型: | String |
Position: | 10 |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Linux
指出使用者映像上的作業系統為Linux。 針對使用者映像型虛擬機部署指定此參數。
類型: | SwitchParameter |
Position: | 6 |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-ManagedDiskId
指定受控磁碟的識別碼。
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Name
指定作業系統磁碟的名稱。
類型: | String |
別名: | OSDiskName, DiskName |
Position: | 1 |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-SecureVMDiskEncryptionSet
磁碟加密集的ARM資源標識碼。 可讓客戶為以 ConfidentialVmEncryptedWithCustomerKey 加密類型建立的磁碟加密集提供 ARM 識別碼。 這可讓客戶搭配機密 VM 使用客戶自控金鑰 (CMK) 加密。 Parameter SecurityEncryptionType 值應該是 DiskwithVMGuestState。
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-SecurityEncryptionType
設定 VM 受控磁碟上的 SecurityEncryptionType 值。可能的值包括:TrustedLaunch、ConfidentialVM_DiskEncryptedWithCustomerKey、ConfidentialVM_VMGuestStateOnlyEncryptedWithPlatformKey、ConfidentialVM_DiskEncryptedWithPlatformKey
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-SourceImageUri
指定使用者映像案例之 VHD 的 URI。
類型: | String |
別名: | SourceImage |
Position: | 4 |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-StorageAccountType
指定受控磁碟的記憶體帳戶類型。
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-VhdUri
指定虛擬硬碟 (VHD) 的統一資源識別碼 (URI)。 針對映像型虛擬機,此參數會指定要在指定平臺映像或使用者映射時建立的 VHD 檔案。 這是從中複製映像二進位大型物件 (BLOB) 以啟動虛擬機的位置。 針對以磁碟為基礎的虛擬機開機案例,此參數會指定虛擬機直接用來啟動的 VHD 檔案。
類型: | String |
別名: | OSDiskVhdUri, DiskVhdUri |
Position: | 2 |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-VM
指定要設定作業系統磁碟屬性的本機虛擬機物件。 若要取得虛擬機物件,請使用 Get-AzVM Cmdlet。
類型: | PSVirtualMachine |
別名: | VMProfile |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | False |
-Windows
指出使用者映像上的作業系統是 Windows。
類型: | SwitchParameter |
Position: | 6 |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-WriteAccelerator
指定OS磁碟上是否應啟用或停用 WriteAccelerator。
類型: | SwitchParameter |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |