Creare macchine virtuali Windows con il modello di distribuzione classica e PowerShellCreate a Windows virtual machine with PowerShell and the classic deployment model


Importante

Azure offre due diversi modelli di distribuzione per creare e usare le risorse: Gestione risorse e la distribuzione classica.Azure has two different deployment models for creating and working with resources: Resource Manager and Classic. Questo articolo illustra l'uso del modello di distribuzione classica.This article covers using the Classic deployment model. Microsoft consiglia di usare il modello di Gestione risorse per le distribuzioni più recenti.Microsoft recommends that most new deployments use the Resource Manager model. Informazioni su come eseguire questa procedura con il modello di Resource Manager.Learn how to perform these steps using the Resource Manager model.

A partire dal 15 novembre 2017, le macchine virtuali saranno disponibili solo nel portale di Azure.Starting November 15, 2017, Virtual Machines will be available only in the Azure portal. L'accesso dal portale classico non sarà più supportato.Access from the classic portal will no longer be supported.

In questi passaggi viene illustrato come personalizzare un set di comandi di Azure PowerShell per la creazione e la preconfigurazione di una macchina virtuale di Azure basata su Windows tramite un approccio con componenti principali.These steps show you how to customize a set of Azure PowerShell commands that create and preconfigure a Windows-based Azure virtual machine by using a building block approach. È possibile usare questo processo per creare rapidamente un set di comandi per una nuova macchina virtuale basata su Windows ed espandere una distribuzione esistente oppure creare più set di comandi in grado di generare rapidamente un ambiente personalizzato di sviluppo/test o per professionisti IT.You can use this process to quickly create a command set for a new Windows-based virtual machine and expand an existing deployment or to create multiple command sets that quickly build out a custom dev/test or IT pro environment.

Questi passaggi seguono un approccio basato sul completamento di valori predefiniti per la creazione di set di comandi di Azure PowerShell.These steps follow a fill-in-the-blanks approach for creating Azure PowerShell command sets. Questo approccio può essere utile se non si è esperti di PowerShell o per sapere semplicemente quali valori specificare per una corretta configurazione.This approach can be useful if you are new to PowerShell or you just want to know what values to specify for successful configuration. Gli utenti esperti di PowerShell possono usare i comandi sostituendo le variabili (le righe che iniziano con "$") con i propri valori.Advanced PowerShell users can take the commands and substitute their own values for the variables (the lines beginning with "$").

Se non è ancora stato installato, attenersi alle istruzioni incluse nell’argomento Come installare e configurare Azure PowerShell per installare Azure PowerShell nel computer locale.If you haven't done so already, use the instructions in How to install and configure Azure PowerShell to install Azure PowerShell on your local computer. Quindi, aprire un prompt dei comandi di Windows PowerShell.Then, open a Windows PowerShell command prompt.

Passaggio 1: Aggiungere l'accountStep 1: Add your account

  1. Al prompt di PowerShell digitare Add-AzureAccount e premere INVIO.At the PowerShell prompt, type Add-AzureAccount and click Enter.
  2. Digitare l'indirizzo di posta elettronica associato alla sottoscrizione di Azure e fare clic su Continua.Type in the email address associated with your Azure subscription and click Continue.
  3. Digitare la password per l'account.Type in the password for your account.
  4. Fare clic su Accedi.Click Sign in.

Passaggio 2: Impostare l'account di archiviazione e la sottoscrizioneStep 2: Set your subscription and storage account

Impostare la sottoscrizione di Azure e l'account di archiviazione eseguendo questi comandi al prompt dei comandi di Windows PowerShell.Set your Azure subscription and storage account by running these commands at the Windows PowerShell command prompt. Sostituire tutti gli elementi all'interno delle virgolette, inclusi i caratteri < e >, con i nomi corretti.Replace everything within the quotes, including the < and > characters, with the correct names.

$subscr="<subscription name>"
$staccount="<storage account name>"
Select-AzureSubscription -SubscriptionName $subscr –Current
Set-AzureSubscription -SubscriptionName $subscr -CurrentStorageAccountName $staccount

È possibile ottenere il nome della sottoscrizione corretto dalla proprietà SubscriptionName dell'output del comando Get-AzureSubscription .You can get the correct subscription name from the SubscriptionName property of the output of the Get-AzureSubscription command. È possibile ottenere il nome dell'account di archiviazione corretto dalla proprietà Label dell'output del comando Get-AzureStorageAccount dopo aver eseguito il comando Select-AzureSubscription.You can get the correct storage account name from the Label property of the output of the Get-AzureStorageAccount command after you run the Select-AzureSubscription command.

Passaggio 3: determinare il valore ImageFamilyStep 3: Determine the ImageFamily

Il passaggio successivo prevede la determinazione del valore ImageFamily o Label per l'immagina specifica corrispondente alla macchina virtuale di Azure da creare.Next, you need to determine the ImageFamily or Label value for the specific image corresponding to the Azure virtual machine you want to create. Con questo comando è possibile ottenere l'elenco di valori ImageFamily disponibili.You can get the list of available ImageFamily values with this command.

Get-AzureVMImage | select ImageFamily -Unique

Di seguito sono riportati alcuni esempi di valori ImageFamily per i computer basati su Windows:Here are some examples of ImageFamily values for Windows-based computers:

  • Windows Server 2012 R2 DatacenterWindows Server 2012 R2 Datacenter
  • Windows Server 2008 R2 SP1,Windows Server 2008 R2 SP1
  • Windows Server 2016 Technical Preview 4Windows Server 2016 Technical Preview 4
  • SQL Server 2012 SP1 Enterprise in Windows Server 2012SQL Server 2012 SP1 Enterprise on Windows Server 2012

Se si trova l'immagine che si sta cercando, aprire una nuova istanza dell'editor di testo preferito o l'ambiente PowerShell Integrated Scripting Environment (ISE).If you find the image you are looking for, open a fresh instance of the text editor of your choice or the PowerShell Integrated Scripting Environment (ISE). Copiare quanto segue nel nuovo file di testo o in PowerShell ISE, sostituendo il valore ImageFamily.Copy the following into the new text file or the PowerShell ISE, substituting the ImageFamily value.

$family="<ImageFamily value>"
$image=Get-AzureVMImage | where { $_.ImageFamily -eq $family } | sort PublishedDate -Descending | select -ExpandProperty ImageName -First 1

In alcuni casi, il nome dell'immagine si trova nella proprietà Label anziché nel valore ImageFamily.In some cases, the image name is in the Label property instead of the ImageFamily value. Se l'immagine che si sta cercando non viene trovata con la proprietà ImageFamily, elencare le immagini in base alla proprietà Label con questo comando.If you didn't find the image that you are looking for using the ImageFamily property, list the images by their Label property with this command.

Get-AzureVMImage | select Label -Unique

Se si trova l'immagine corretta con questo comando, aprire una nuova istanza dell'editor di testo preferito o l'ambiente PowerShell ISE.If you find the right image with this command, open a fresh instance of the text editor of your choice or the PowerShell ISE. Copiare quanto segue nel nuovo file di testo o in PowerShell ISE, sostituendo il valore Label.Copy the following into the new text file or the PowerShell ISE, substituting the Label value.

$label="<Label value>"
$image = Get-AzureVMImage | where { $_.Label -eq $label } | sort PublishedDate -Descending | select -ExpandProperty ImageName -First 1

Passaggio 4: compilare il set di comandiStep 4: Build your command set

Compilare il resto del set di comandi copiando il seguente set appropriato di blocchi nel nuovo file di testo o in ISE, quindi compilare i valori delle variabili rimuovendo i caratteri < e >.Build the rest of your command set by copying the appropriate set of blocks below into your new text file or the ISE and then filling in the variable values and removing the < and > characters. Vedere i due esempi alla fine di questo articolo per avere un'idea del risultato finale.See the two examples at the end of this article for an idea of the final result.

Avviare il set di comandi scegliendo uno dei due seguenti blocchi di comandi (obbligatorio).Start your command set by choosing one of these two command blocks (required).

Opzione 1: specificare un nome di macchina virtuale e una dimensione.Option 1: Specify a virtual machine name and a size.

$vmname="<machine name>"
$vmsize="<Specify one: Small, Medium, Large, ExtraLarge, A5, A6, A7, A8, A9>"
$vm1=New-AzureVMConfig -Name $vmname -InstanceSize $vmsize -ImageName $image

Opzione 2: specificare un nome, la dimensione e il nome del set di disponibilità.Option 2: Specify a name, size, and availability set name.

$vmname="<machine name>"
$vmsize="<Specify one: Small, Medium, Large, ExtraLarge, A5, A6, A7, A8, A9>"
$availset="<set name>"
$vm1=New-AzureVMConfig -Name $vmname -InstanceSize $vmsize -ImageName $image -AvailabilitySetName $availset

Per i valori InstanceSize per le macchine virtuali di serie D-, DS- o G-, vedere Dimensioni delle macchine virtuali e dei servizi cloud per Azure.For the InstanceSize values for D-, DS-, or G-series virtual machines, see Virtual Machine and Cloud Service Sizes for Azure.

Nota

Se si dispone di un contratto Enterprise con Software Assurance e si intende sfruttare il vantaggio dell'uso ibrido di Windows Server, aggiungere il parametro -LicenseType al cmdlet New-AzureVMConfig, passando il valore Windows_Server come caso d'uso tipico.If you have an Enterprise Agreement with Software Assurance, and intend to take advantage of the Windows Server Hybrid Use Benefit, add the -LicenseType parameter to the New-AzureVMConfig cmdlet, passing the value Windows_Server for the typical use case. Controllare che si stia usando un'immagine caricata, poiché con il vantaggio dell'uso ibrido non è consentito usare un'immagine standard della raccolta.Be sure you are using an image you have uploaded; you cannot use a standard image from the Gallery with the Hybrid Use Benefit.

Facoltativamente, per un computer Windows autonomo, specificare l'account amministratore locale e la password.Optionally, for a standalone Windows computer, specify the local administrator account and password.

$cred=Get-Credential -Message "Type the name and password of the local administrator account."
$vm1 | Add-AzureProvisioningConfig -Windows -AdminUsername $cred.Username -Password $cred.GetNetworkCredential().Password

Scegliere una password complessa.Choose a strong password. Per verificarne il livello di complessità, vedere Controllo password: utilizzo di password complesse.To check its strength, see Password Checker: Using Strong Passwords.

Facoltativamente, per aggiungere il computer Windows a un dominio di Active Directory esistente, specificare l'account e la password di amministratore locale, il dominio e infine il nome e la password di un account di dominio.Optionally, to add the Windows computer to an existing Active Directory domain, specify the local administrator account and password, the domain, and the name and password of a domain account.

$cred1=Get-Credential –Message "Type the name and password of the local administrator account."
$cred2=Get-Credential –Message "Now type the name (not including the domain) and password of an account that has permission to add the machine to the domain."
$domaindns="<FQDN of the domain that the machine is joining>"
$domacctdomain="<domain of the account that has permission to add the machine to the domain>"
$vm1 | Add-AzureProvisioningConfig -AdminUsername $cred1.Username -Password $cred1.GetNetworkCredential().Password -WindowsDomain -Domain $domacctdomain -DomainUserName $cred2.Username -DomainPassword $cred2.GetNetworkCredential().Password -JoinDomain $domaindns

Per altre opzioni di preconfigurazione per le macchine virtuali basate su Windows, vedere la sintassi per i set di parametri Windows e WindowsDomain in Add-AzureProvisioningConfig.For additional pre-configuration options for Windows-based virtual machines, see the syntax for the Windows and WindowsDomain parameter sets in Add-AzureProvisioningConfig.

Facoltativamente, assegnare alla macchina virtuale un indirizzo IP specifico, noto come DIP statico.Optionally, assign the virtual machine a specific IP address, known as a static DIP.

$vm1 | Set-AzureStaticVNetIP -IPAddress <IP address>

È possibile verificare la disponibilità di uno specifico indirizzo IP con:You can verify that a specific IP address is available with:

Test-AzureStaticVNetIP –VNetName <VNet name> –IPAddress <IP address>

Facoltativamente, assegnare la macchina virtuale a una subnet specifica in una rete virtuale di Azure.Optionally, assign the virtual machine to a specific subnet in an Azure virtual network.

$vm1 | Set-AzureSubnet -SubnetNames "<name of the subnet>"

Facoltativamente, aggiungere un disco dati alla macchina virtuale.Optionally, add a single data disk to the virtual machine.

$disksize=<size of the disk in GB>
$disklabel="<the label on the disk>"
$lun=<Logical Unit Number (LUN) of the disk>
$hcaching="<Specify one: ReadOnly, ReadWrite, None>"
$vm1 | Add-AzureDataDisk -CreateNew -DiskSizeInGB $disksize -DiskLabel $disklabel -LUN $lun -HostCaching $hcaching

Per un controller di dominio di Active Directory, impostare $hcaching su "None".For an Active Directory domain controller, set $hcaching to "None".

Facoltativamente, aggiungere la macchina virtuale a un set con carico bilanciato esistente per il traffico esterno.Optionally, add the virtual machine to an existing load-balanced set for external traffic.

$protocol="<Specify one: tcp, udp>"
$localport=<port number of the internal port>
$pubport=<port number of the external port>
$endpointname="<name of the endpoint>"
$lbsetname="<name of the existing load-balanced set>"
$probeprotocol="<Specify one: tcp, http>"
$probeport=<TCP or HTTP port number of probe traffic>
$probepath="<URL path for probe traffic>"
$vm1 | Add-AzureEndpoint -Name $endpointname -Protocol $protocol -LocalPort $localport -PublicPort $pubport -LBSetName $lbsetname -ProbeProtocol $probeprotocol -ProbePort $probeport -ProbePath $probepath

Infine, scegliere uno di questi blocchi di comandi richiesti per la creazione della macchina virtuale.Finally, choose one of these required command blocks for creating the virtual machine.

Opzione 1: creare la macchina virtuale in un servizio cloud esistente.Option 1: Create the virtual machine in an existing cloud service.

New-AzureVM –ServiceName "<short name of the cloud service>" -VMs $vm1

Il nome breve del servizio cloud è il nome visualizzato nell'elenco dei servizi cloud nel portale di Azure o nell'elenco dei gruppi di risorse nel portale di Azure.The short name of the cloud service is the name that appears in the list of Cloud Services in the Azure portal or in the list of Resource Groups in the Azure portal.

Opzione 2: creare la macchina virtuale in un servizio cloud e in una rete virtuale esistenti.Option 2: Create the virtual machine in an existing cloud service and virtual network.

$svcname="<short name of the cloud service>"
$vnetname="<name of the virtual network>"
New-AzureVM –ServiceName $svcname -VMs $vm1 -VNetName $vnetname

Passaggio 5: eseguire il set di comandiStep 5: Run your command set

Rivedere il set di comandi di Azure PowerShell compilato nell'editor di testo o in PowerShell ISE costituito da più blocchi di comandi del passaggio 4.Review the Azure PowerShell command set you built in your text editor or the PowerShell ISE consisting of multiple blocks of commands from step 4. Assicurarsi di aver specificato tutte le variabili necessarie e che siano presenti i valori corretti.Ensure that you have specified all the needed variables and that they have the correct values. Assicurarsi inoltre che siano stati rimossi tutti i caratteri < e >.Also make sure that you have removed all the < and > characters.

Se si usa un editor di testo, copiare il set di comandi negli Appunti, quindi fare clic con il pulsante destro del mouse sul prompt dei comandi aperto di Windows PowerShell.If you are using a text editor, copy the command set to the clipboard and then right-click your open Windows PowerShell command prompt. Il set di comandi verrà emesso come una serie di comandi di PowerShell e verrà creata la macchina virtuale di Azure.This will issue the command set as a series of PowerShell commands and create your Azure virtual machine. In alternativa, eseguire il comando set in PowerShell ISE.Alternately, run the command set in the PowerShell ISE.

Se si crea nuovamente questa macchina virtuale o una simile, è possibile:If you will be creating this virtual machine again or a similar one, you can:

  • Salvare questo set di comandi come file di script di PowerShell (.ps1).Save this command set as a PowerShell script file (.ps1).
  • Salvare questo set di comandi come Runbook di automazione di Azure nella sezione Account di automazione del portale di Azure.Save this command set as an Azure Automation runbook in the Automation Accounts section of the Azure portal.

Esempi:Examples

Di seguito sono riportati due esempi d'uso dei passaggi precedenti per compilare i set di comandi di Azure PowerShell per la creazione di macchine virtuali Azure basate su Windows.Here are two examples of using the steps above to build Azure PowerShell command sets that create Windows-based Azure virtual machines.

Esempio 1Example 1

Un set di comandi di PowerShell è necessario per creare la macchina virtuale iniziale per un controller di dominio di Active Directory che:I need a PowerShell command set to create the initial virtual machine for an Active Directory domain controller that:

  • Utilizzi l'immagine Windows Server 2012 R2 Datacenter.Uses the Windows Server 2012 R2 Datacenter image.
  • Sia denominato AZDC1.Has the name AZDC1.
  • Sia un computer autonomo.Is a standalone computer.
  • Disponga di un disco dati aggiuntivo di 20 GB.Has an additional data disk of 20 GB.
  • Abbia l'indirizzo IP statico 192.168.244.4.Has the static IP address 192.168.244.4.
  • Si trovi nella subnet BackEnd della rete virtuale AZDatacenter.Is in the BackEnd subnet of the AZDatacenter virtual network.
  • Si trovi nel servizio cloud Azure-TailspinToys.Is in the Azure-TailspinToys cloud service.

Ecco il set di comandi corrispondente di Azure PowerShell per creare la macchina virtuale, con righe vuote tra ogni blocco per migliorare la leggibilità.Here is the corresponding Azure PowerShell command set to create this virtual machine, with blank lines between each block for readability.

$family="Windows Server 2012 R2 Datacenter"
$image=Get-AzureVMImage | where { $_.ImageFamily -eq $family } | sort PublishedDate -Descending | select -ExpandProperty ImageName -First 1
$vmname="AZDC1"
$vmsize="Medium"
$vm1=New-AzureVMConfig -Name $vmname -InstanceSize $vmsize -ImageName $image

$cred=Get-Credential -Message "Type the name and password of the local administrator account."
$vm1 | Add-AzureProvisioningConfig -Windows -AdminUsername $cred.Username -Password $cred.GetNetworkCredential().Password

$vm1 | Set-AzureSubnet -SubnetNames "BackEnd"

$vm1 | Set-AzureStaticVNetIP -IPAddress 192.168.244.4

$disksize=20
$disklabel="DCData"
$lun=0
$hcaching="None"
$vm1 | Add-AzureDataDisk -CreateNew -DiskSizeInGB $disksize -DiskLabel $disklabel -LUN $lun -HostCaching $hcaching

$svcname="Azure-TailspinToys"
$vnetname="AZDatacenter"
New-AzureVM –ServiceName $svcname -VMs $vm1 -VNetName $vnetname

Esempio 2Example 2

Un set di comandi di PowerShell è necessario per creare una macchina virtuale per un server line-of-business che:I need a PowerShell command set to create a virtual machine for a line-of-business server that:

  • Utilizzi l'immagine Windows Server 2012 R2 Datacenter.Uses the Windows Server 2012 R2 Datacenter image.
  • Sia denominato LOB1.Has the name LOB1.
  • Sia membro del dominio corp.contoso.com.Is a member of the corp.contoso.com domain.
  • Disponga di un disco dati aggiuntivo di 200 GB.Has an additional data disk of 200 GB.
  • Si trovi nella subnet FrontEnd della rete virtuale AZDatacenter.Is in the FrontEnd subnet of the AZDatacenter virtual network.
  • Si trovi nel servizio cloud Azure-TailspinToys.Is in the Azure-TailspinToys cloud service.

Ecco il set di comandi corrispondente di Azure PowerShell per creare la macchina virtuale.Here is the corresponding Azure PowerShell command set to create this virtual machine.

$family="Windows Server 2012 R2 Datacenter"
$image=Get-AzureVMImage | where { $_.ImageFamily -eq $family } | sort PublishedDate -Descending | select -ExpandProperty ImageName -First 1
$vmname="LOB1"
$vmsize="Large"
$vm1=New-AzureVMConfig -Name $vmname -InstanceSize $vmsize -ImageName $image

$cred1=Get-Credential –Message "Type the name and password of the local administrator account."
$cred2=Get-Credential –Message "Now type the name (not including the domain) and password of an account that has permission to add the machine to the domain."
$domaindns="corp.contoso.com"
$domacctdomain="CORP"
$vm1 | Add-AzureProvisioningConfig -AdminUsername $cred1.Username -Password $cred1.GetNetworkCredential().Password -WindowsDomain -Domain $domacctdomain -DomainUserName $cred2.Username -DomainPassword $cred2.GetNetworkCredential().Password -JoinDomain $domaindns

$vm1 | Set-AzureSubnet -SubnetNames "FrontEnd"

$disksize=200
$disklabel="LOBData"
$lun=0
$hcaching="ReadWrite"
$vm1 | Add-AzureDataDisk -CreateNew -DiskSizeInGB $disksize -DiskLabel $disklabel -LUN $lun -HostCaching $hcaching

$svcname="Azure-TailspinToys"
$vnetname="AZDatacenter"
New-AzureVM –ServiceName $svcname -VMs $vm1 -VNetName $vnetname

Passaggi successiviNext steps

Se è necessario un disco del sistema operativo superiore a 127 GB, è possibile espandere l'unità del sistema operativo.If you need an OS disk that is larger than 127 GB, you can expand the OS drive.