Dela via


Set-AzVMOSDisk

Anger operativsystemets diskegenskaper på en virtuell dator.

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

Cmdleten Set-AzVMOSDisk anger operativsystemets diskegenskaper på en virtuell dator.

Exempel

Exempel 1: Ange egenskaper på en virtuell dator från plattformsavbildning

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

Det första kommandot hämtar tillgänglighetsuppsättningen med namnet AvailabilitySet13 i resursgruppen med namnet ResourceGroup11 och lagrar sedan objektet i variabeln $AvailabilitySet. Det andra kommandot skapar ett virtuellt datorobjekt och lagrar det sedan i variabeln $VirtualMachine. Kommandot tilldelar ett namn och en storlek till den virtuella datorn. Den virtuella datorn tillhör tillgänglighetsuppsättningen som lagras i $AvailabilitySet. Det sista kommandot anger egenskaperna på den virtuella datorn i $VirtualMachine.

Exempel 2: Anger egenskaper på en virtuell dator från generaliserad användaravbildning

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

Det första kommandot hämtar tillgänglighetsuppsättningen med namnet AvailabilitySet13 i resursgruppen med namnet ResourceGroup11 och lagrar objektet i variabeln $AvailabilitySet. Det andra kommandot skapar ett virtuellt datorobjekt och lagrar det i variabeln $VirtualMachine. Kommandot tilldelar ett namn och en storlek till den virtuella datorn. Den virtuella datorn tillhör tillgänglighetsuppsättningen som lagras i $AvailabilitySet. Det sista kommandot anger egenskaperna på den virtuella datorn i $VirtualMachine.

Exempel 3: Anger egenskaper på en virtuell dator från en specialiserad användaravbildning

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

Det första kommandot hämtar tillgänglighetsuppsättningen med namnet AvailabilitySet13 i resursgruppen med namnet ResourceGroup11 och lagrar objektet i variabeln $AvailabilitySet. Det andra kommandot skapar ett virtuellt datorobjekt och lagrar det i variabeln $VirtualMachine. Kommandot tilldelar ett namn och en storlek till den virtuella datorn. Den virtuella datorn tillhör tillgänglighetsuppsättningen som lagras i $AvailabilitySet. Det sista kommandot anger egenskaperna på den virtuella datorn i $VirtualMachine.

Exempel 4: Ange inställningar för diskkryptering på en virtuell dators operativsystemdisk

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

I det här exemplet anges diskkrypteringsinställningarna på en virtuell dators operativsystemdisk.

Exempel 5: Skapa en virtuell ConfidentialVM-dator med VM OS Disk-kryptering av DiskWithVMGuestState och Krypteringsuppsättning för diskkryptering av 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';

Parametrar

-Caching

Anger cachelagringsläget för operativsystemdisken. Giltiga värden är:

  • Skrivskyddat
  • ReadWrite Standardvärdet är ReadWrite. Om du ändrar cachelagringsvärdet startas den virtuella datorn om. Den här inställningen påverkar diskens prestanda.
Typ:Nullable<T>[CachingTypes]
Godkända värden:None, ReadOnly, ReadWrite
Position:3
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-CreateOption

Anger om den här cmdleten skapar en disk på den virtuella datorn från en plattform eller användarbild eller kopplar en befintlig disk. Giltiga värden är:

  • Bifoga. Ange det här alternativet för att skapa en virtuell dator från en specialiserad disk. När du anger det här alternativet ska du inte ange parametern SourceImageUri . Använd i stället cmdleten Set-AzVMSourceImage. Du måste också använda parametrarna Windows eller Linux för att tala om för Azure-plattformen vilken typ av operativsystem som finns på den virtuella hårddisken. VhdUri-parametern räcker för att tala om för azure-plattformen var disken ska anslutas.
  • FromImage. Ange det här alternativet för att skapa en virtuell dator från en plattformsbild eller en generaliserad användarbild. När det gäller en generaliserad användaravbildning måste du också ange parametern SourceImageUri och antingen Windows - eller Linux-parametrarna för att meddela Azure-plattformen platsen och typen av operativsystemdiskens VHD i stället för att använda cmdleten Set-AzVMSourceImage . När det gäller en plattformsbild räcker det med VhdUri-parametern .
  • Tom.
Typ:String
Position:5
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-DefaultProfile

Autentiseringsuppgifter, konto, klientorganisation och prenumeration som används för kommunikation med Azure.

Typ:IAzureContextContainer
Alias:AzContext, AzureRmContext, AzureCredential
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-DeleteOption

Anger borttagningsalternativet os-disk efter att den virtuella datorn har tagits bort. Alternativen är Koppla från, Ta bort

Typ:String
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:True
Godkänn jokertecken:False

-DiffDiskPlacement

Anger den tillfälliga diskplaceringen för operativsystemdisken. Den här egenskapen kan användas av användaren i begäran för att välja plats, dvs. cachedisk eller resursdiskutrymme för tillfällig OS-disketablering. Mer information om krav för tillfällig OS-diskstorlek finns i Krav på tillfällig OS-diskstorlek för virtuella Windows-datorer på https://learn.microsoft.com/azure/virtual-machines/windows/ephemeral-os-disks#size-requirements och virtuella Linux-datorer på https://learn.microsoft.com/azure/virtual-machines/linux/ephemeral-os-disks#size-requirements. Den här parametern kan bara användas om parametern DiffDiskSetting är inställd på "Lokal".

Typ:String
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:True
Godkänn jokertecken:False

-DiffDiskSetting

Anger inställningarna för olika diskar för operativsystemdisken.

Typ:String
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:True
Godkänn jokertecken:False

-DiskEncryptionKeyUrl

Anger platsen för diskkrypteringsnyckeln.

Typ:String
Position:7
Standardvärde:None
Obligatorisk:True
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-DiskEncryptionKeyVaultId

Anger resurs-ID för nyckelvalvet som innehåller diskkrypteringsnyckeln.

Typ:String
Position:8
Standardvärde:None
Obligatorisk:True
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-DiskEncryptionSetId

Anger resurs-ID för kundhanterad diskkrypteringsuppsättning. Detta kan bara anges för hanterad disk.

Typ:String
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-DiskSizeInGB

Anger storleken i GB på operativsystemdisken.

Typ:Nullable<T>[Int32]
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-KeyEncryptionKeyUrl

Anger platsen för nyckelkrypteringsnyckeln.

Typ:String
Position:9
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-KeyEncryptionKeyVaultId

Anger resurs-ID för nyckelvalvet som innehåller nyckelkrypteringsnyckeln.

Typ:String
Position:10
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-Linux

Anger att operativsystemet på användaravbildningen är Linux. Ange den här parametern för distribution av användarbildbaserade virtuella datorer.

Typ:SwitchParameter
Position:6
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-ManagedDiskId

Anger ID för en hanterad disk.

Typ:String
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-Name

Anger namnet på operativsystemdisken.

Typ:String
Alias:OSDiskName, DiskName
Position:1
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-SecureVMDiskEncryptionSet

ARM-resurs-ID för diskkrypteringsuppsättning. Gör att kunden kan ange ARM-ID för diskkrypteringsuppsättning som skapats med krypteringstypen ConfidentialVmEncryptedWithCustomerKey. På så sätt kan kunden använda CMK-kryptering (Customer Managed Key) med konfidentiell virtuell dator. Parametern SecurityEncryptionType-värdet ska vara DiskwithVMGuestState.

Typ:String
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:True
Godkänn jokertecken:False

-SecurityEncryptionType

Anger värdet SecurityEncryptionType på den virtuella datorns hanterade disk. möjliga värden är: TrustedLaunch, ConfidentialVM_DiskEncryptedWithCustomerKey, ConfidentialVM_VMGuestStateOnlyEncryptedWithPlatformKey, ConfidentialVM_DiskEncryptedWithPlatformKey

Typ:String
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:True
Godkänn jokertecken:False

-SourceImageUri

Anger URI för den virtuella hårddisken för användarbildscenarier.

Typ:String
Alias:SourceImage
Position:4
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-StorageAccountType

Anger lagringskontotypen för hanterad disk.

Typ:String
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-VhdUri

Anger URI (Uniform Resource Identifier) för en virtuell hårddisk (VHD). För en avbildningsbaserad virtuell dator anger den här parametern den VHD-fil som ska skapas när en plattformsbild eller användarbild anges. Det här är den plats från vilken det binära stora avbildningsobjektet (BLOB) kopieras för att starta den virtuella datorn. För ett diskbaserat startscenario för virtuella datorer anger den här parametern den VHD-fil som den virtuella datorn använder direkt för att starta.

Typ:String
Alias:OSDiskVhdUri, DiskVhdUri
Position:2
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-VM

Anger det lokala virtuella datorobjekt som du vill ange operativsystemdiskegenskaper på. Om du vill hämta ett virtuellt datorobjekt använder du cmdleten Get-AzVM.

Typ:PSVirtualMachine
Alias:VMProfile
Position:0
Standardvärde:None
Obligatorisk:True
Godkänn pipeline-indata:True
Godkänn jokertecken:False

-Windows

Anger att operativsystemet på användaravbildningen är Windows.

Typ:SwitchParameter
Position:6
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-WriteAccelerator

Anger om WriteAccelerator ska aktiveras eller inaktiveras på OS-disken.

Typ:SwitchParameter
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

Indata

PSVirtualMachine

String

Utdata

PSVirtualMachine