Come creare macchine virtuali di SQL Server con Azure PowerShellHow to create SQL Server virtual machines with Azure PowerShell

Questa guida illustra le opzioni per creare macchine virtuali di Windows SQL Server con Azure PowerShell.This guide explains your options to create Windows SQL Server VMs with Azure PowerShell. Per un esempio di Azure PowerShell semplificato con più valori predefiniti, vedere il Guida introduttiva di PowerShell per Azure VM SQL.For a streamlined Azure PowerShell example with more default values, see the SQL VM Azure PowerShell quickstart.

Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.If you don't have an Azure subscription, create a free account before you begin.

Per questa guida introduttiva è richiesto il modulo Azure PowerShell versione 3.6 o successiva.This quickstart requires the Azure PowerShell module version 3.6 or later. Eseguire Get-Module -ListAvailable AzureRM per trovare la versione.Run Get-Module -ListAvailable AzureRM to find the version. Se è necessario eseguire l'installazione o l'aggiornamento, vedere come installare il modulo Azure PowerShell.If you need to install or upgrade, see Install Azure PowerShell module.

Configurare la sottoscrizioneConfigure your subscription

  1. Aprire PowerShell e stabilire l'accesso al proprio account Azure eseguendo il Aggiungi AzureRmAccount comando.Open PowerShell and establish access to your Azure account by running the Add-AzureRmAccount command.

    Add-AzureRmAccount
    
  2. Vedrai una schermata di accesso immettere le proprie credenziali.You should see a sign-in screen to enter your credentials. Utilizzare lo stesso indirizzo email e password utilizzati per accedere al portale di Azure.Use the same email and password that you use to sign in to the Azure portal.

Definire le variabili di immagineDefine image variables

Per semplificare le operazioni di creazione di riutilizzo e script, per iniziare, definire una serie di variabili.To simplify reuse and script creations, start by defining a number of variables. Cambiare i valori dei parametri in base alla necessità, ma quando si modificano i valori forniti occorre prestare attenzione alle restrizioni di denominazione correlate alle lunghezze dei nomi e ai caratteri speciali.Change the parameter values as you see fit, but beware of naming restrictions related to name lengths and special characters when modifying the values provided.

Posizione e gruppo di risorseLocation and Resource Group

Utilizzare due variabili per definire l'area dati e il gruppo di risorse in cui si creano le altre risorse per la macchina virtuale.Use two variables to define the data region and the resource group into which you create the other resources for the virtual machine.

Modificare in base alle esigenze specifiche e quindi eseguire i cmdlet seguenti per inizializzare le variabili.Modify as desired and then execute the following cmdlets to initialize these variables.

$Location = "SouthCentralUS"
$ResourceGroupName = "sqlvm2"

Proprietà della risorsa di archiviazioneStorage properties

Usare le variabili seguenti per definire l'account di archiviazione e il tipo di risorsa di archiviazione che devono essere usati dalla macchina virtuale.Use the following variables to define the storage account and the type of storage to be used by the virtual machine.

Modificare in base alle esigenze specifiche e quindi eseguire il cmdlet seguente per inizializzare le variabili.Modify as desired and then execute the following cmdlet to initialize these variables. Si noti che in questo esempio viene usata l' Archiviazione Premium, consigliata per carichi di lavoro di produzione.Note that in this example, we are using Premium Storage, which is recommended for production workloads.

$StorageName = $ResourceGroupName + "storage"
$StorageSku = "Premium_LRS"

Proprietà di reteNetwork properties

Usare le variabili seguenti per definire l'interfaccia di rete, il metodo di allocazione TCP/IP, il nome della rete virtuale, il nome della subnet virtuale, l'intervallo di indirizzi IP per la rete virtuale, l'intervallo di indirizzi IP per la subnet e l'etichetta del nome del dominio pubblico che devono essere usati dalla rete nella macchina virtuale.Use the following variables to define the network interface, the TCP/IP allocation method, the virtual network name, the virtual subnet name, the range of IP addresses for the virtual network, the range of IP addresses for the subnet, and the public domain name label to be used by the network in the virtual machine.

Modificare in base alle esigenze specifiche e quindi eseguire il cmdlet seguente per inizializzare le variabili.Modify as desired and then execute the following cmdlet to initialize these variables.

$InterfaceName = $ResourceGroupName + "ServerInterface"
$NsgName = $ResourceGroupName + "nsg"
$TCPIPAllocationMethod = "Dynamic"
$VNetName = $ResourceGroupName + "VNet"
$SubnetName = "Default"
$VNetAddressPrefix = "10.0.0.0/16"
$VNetSubnetAddressPrefix = "10.0.0.0/24"
$DomainName = $ResourceGroupName

Proprietà della macchina virtualeVirtual machine properties

Usare le variabili seguenti per definire il nome della macchina virtuale, il nome del computer, le dimensioni della macchina virtuale e il nome del disco del sistema operativo per la macchina virtuale.Use the following variables to define the virtual machine name, the computer name, the virtual machine size, and the operating system disk name for the virtual machine.

Modificare in base alle esigenze specifiche e quindi eseguire il cmdlet seguente per inizializzare le variabili.Modify as desired and then execute the following cmdlet to initialize these variables.

$VMName = $ResourceGroupName + "VM"
$ComputerName = $ResourceGroupName + "Server"
$VMSize = "Standard_DS13"
$OSDiskName = $VMName + "OSDisk"

Scegliere un'immagine di SQL ServerChoose a SQL Server image

Utilizzare le seguenti variabili per definire l'immagine di SQL Server da utilizzare per la macchina virtuale.Use the following variables to define the SQL Server image to use for the virtual machine.

  1. In primo luogo, elencare tutte le offerte di immagine di SQL Server con il Get AzureRmVMImageOffer comando:First, list out all of the SQL Server image offerings with the Get-AzureRmVMImageOffer command:

    Get-AzureRmVMImageOffer -Location $Location -Publisher 'MicrosoftSQLServer'
    
  2. Per questa esercitazione, usare le variabili seguenti per specificare 2017 di SQL Server in Windows Server 2016.For this tutorial, use the following variables to specify SQL Server 2017 on Windows Server 2016.

    $OfferName = "SQL2017-WS2016"
    $PublisherName = "MicrosoftSQLServer"
    $Version = "latest"
    
  3. Successivamente, elencare le edizioni disponibili per l'offerta.Next, list out the available editions for your offer.

    Get-AzureRmVMImageSku -Location $Location -Publisher 'MicrosoftSQLServer' -Offer $OfferName | Select Skus
    
  4. Per questa esercitazione, usare l'edizione di SQL Server Developer Edition di 2017 (SQLDEV).For this tutorial, use the SQL Server 2017 Developer edition (SQLDEV). L'edizione Developer è concessa in licenza gratuitamente per test e sviluppo e si paga solo il costo di esecuzione della VM.The Developer edition is freely licensed for testing and development, and you only pay for the cost of running the VM.

    $Sku = "SQLDEV"
    

Creare un gruppo di risorseCreate a resource group

Il primo oggetto creato con il modello di distribuzione Resource Manager è il gruppo di risorse.With the Resource Manager deployment model, the first object that you create is the resource group. Utilizzare il New AzureRmResourceGroup cmdlet per creare un gruppo di risorse di Azure e le risorse con il nome del gruppo di risorse e il percorso definito dalle variabili che è stato inizializzato in precedenza.Use the New-AzureRmResourceGroup cmdlet to create an Azure resource group and its resources with the resource group name and location defined by the variables that you previously initialized.

Eseguire il cmdlet seguente per creare un nuovo gruppo di risorse.Execute the following cmdlet to create your new resource group.

New-AzureRmResourceGroup -Name $ResourceGroupName -Location $Location

Creare un account di archiviazioneCreate a storage account

La macchina virtuale richiede risorse di archiviazione per il disco del sistema operativo e per i file di dati e di log di SQL Server.The virtual machine requires storage resources for the operating system disk and for the SQL Server data and log files. Per semplicità, è creare un singolo disco per entrambi.For simplicity, we create a single disk for both. Successivamente è possibile collegare dischi aggiuntivi usando il cmdlet Add-Azure Disk per posizionare i file di dati e di log di SQL Server in dischi dedicati.You can attach additional disks later using the Add-Azure Disk cmdlet in order to place your SQL Server data and log files on dedicated disks. Utilizzare il New AzureRmStorageAccount cmdlet per creare un account di archiviazione standard del nuovo gruppo di risorse e con il nome account di archiviazione, un nome di Sku archiviazione e un percorso definito utilizzando le variabili che è stato inizializzato in precedenza .Use the New-AzureRmStorageAccount cmdlet to create a standard storage account in your new resource group and with the storage account name, storage Sku name, and location defined using the variables that you previously initialized.

Eseguire il cmdlet seguente per creare il nuovo account di archiviazione.Execute the following cmdlet to create your new storage account.

$StorageAccount = New-AzureRmStorageAccount -ResourceGroupName $ResourceGroupName `
   -Name $StorageName -SkuName $StorageSku `
   -Kind "Storage" -Location $Location

Suggerimento

La creazione dell'account di archiviazione può richiedere alcuni minuti.Creating the storage account can take a few minutes.

Creare risorse di reteCreate network resources

La macchina virtuale richiede alcune risorse di rete per la connettività di rete.The virtual machine requires a number of network resources for network connectivity.

  • Ogni macchina virtuale richiede una rete virtuale.Each virtual machine requires a virtual network.
  • In una rete virtuale deve essere definita almeno una subnet.A virtual network must have at least one subnet defined.
  • È necessario che sia definita un'interfaccia di rete con un indirizzo IP pubblico o privato.A network interface must be defined with either a public or a private IP address.

Creare una configurazione di subnet di rete virtualeCreate a virtual network subnet configuration

Iniziare creando una configurazione di subnet per la rete virtuale.Start by creating a subnet configuration for our virtual network. Per questa esercitazione è creare una subnet predefinita utilizzando il New AzureRmVirtualNetworkSubnetConfig cmdlet.For our tutorial, we create a default subnet using the New-AzureRmVirtualNetworkSubnetConfig cmdlet. Creare la configurazione di subnet della rete virtuale con il prefisso di nome e l'indirizzo subnet definito utilizzando le variabili che è stato inizializzato in precedenza.We create our virtual network subnet configuration with the subnet name and address prefix defined using the variables that you previously initialized.

Nota

È possibile definire altre proprietà della configurazione della subnet della rete virtuale usando questo cmdlet, ma questa operazione non rientra nell'ambito dell'esercitazione.You can define additional properties of the virtual network subnet configuration using this cmdlet, but that is beyond the scope of this tutorial.

Eseguire il cmdlet seguente per creare la configurazione di subnet virtuale.Execute the following cmdlet to create your virtual subnet configuration.

$SubnetConfig = New-AzureRmVirtualNetworkSubnetConfig -Name $SubnetName -AddressPrefix $VNetSubnetAddressPrefix

Crea rete virtualeCreate a virtual network

Successivamente, creare la rete virtuale utilizzando il New AzureRmVirtualNetwork cmdlet.Next, Create your virtual network using the New-AzureRmVirtualNetwork cmdlet. Creare la rete virtuale nel nuovo gruppo di risorse, con il nome, percorso e l'indirizzo prefisso definito usando le variabili che è stato inizializzato in precedenza e la configurazione di subnet è definito nel passaggio precedente.Create the virtual network in your new resource group, with the name, location, and address prefix defined using the variables that you previously initialized, and using the subnet configuration that you defined in the previous step.

Eseguire il cmdlet seguente per creare la rete virtuale.Execute the following cmdlet to create your virtual network.

$VNet = New-AzureRmVirtualNetwork -Name $VNetName `
   -ResourceGroupName $ResourceGroupName -Location $Location `
   -AddressPrefix $VNetAddressPrefix -Subnet $SubnetConfig

Creare l'indirizzo IP pubblicoCreate the public IP address

Dopo avere definito la rete virtuale, è necessario configurare un indirizzo IP per la connettività alla macchina virtuale.Now that we have our virtual network defined, we need to configure an IP address for connectivity to the virtual machine. Per questa esercitazione, si crea un indirizzo IP pubblico utilizzando l'indirizzo IP dinamico indirizzamento per supportare la connettività Internet.For this tutorial, we create a public IP address using dynamic IP addressing to support Internet connectivity. Utilizzare il New AzureRmPublicIpAddress per creare l'indirizzo IP pubblico e di indirizzi nel gruppo di risorse creato in precedenza con il nome, percorso, il metodo di allocazione ed etichetta del nome di dominio DNS definita utilizzando le variabili che si in precedenza è stato inizializzato.Use the New-AzureRmPublicIpAddress cmdlet to create the public IP address in the resource group created previously and with the name, location, allocation method, and DNS domain name label defined using the variables that you previously initialized.

Nota

È possibile definire altre proprietà dell'indirizzo IP pubblico usando questo cmdlet, ma questa operazione non rientra nell'ambito dell'esercitazione.You can define additional properties of the public IP address using this cmdlet, but that is beyond the scope of this initial tutorial. È anche possibile creare un indirizzo privato o un indirizzo di tipo statico, ma anche questa procedura non rientra nell'ambito dell'esercitazione.You could also create a private address or an address with a static address, but that is also beyond the scope of this tutorial.

Eseguire il cmdlet seguente per creare l'indirizzo IP pubblico.Execute the following cmdlet to create your public IP address.

$PublicIp = New-AzureRmPublicIpAddress -Name $InterfaceName `
   -ResourceGroupName $ResourceGroupName -Location $Location `
   -AllocationMethod $TCPIPAllocationMethod -DomainNameLabel $DomainName

Creare il gruppo di sicurezza di reteCreate the network security group

Per proteggere il traffico della macchina virtuale e SQL Server, creare un gruppo di sicurezza di rete.To secure the VM and SQL Server traffic, create a network security group.

  1. Innanzitutto, creare una regola gruppo di sicurezza di rete per RDP consentire le connessioni desktop remoto.First, create a network security group rule for RDP to allow remote desktop connections.

    $NsgRuleRDP = New-AzureRmNetworkSecurityRuleConfig -Name "RDPRule" -Protocol Tcp `
       -Direction Inbound -Priority 1000 -SourceAddressPrefix * -SourcePortRange * `
       -DestinationAddressPrefix * -DestinationPortRange 3389 -Access Allow
    
  2. Configurare una regola del gruppo di sicurezza di rete che consente il traffico sulla porta TCP 1433.Configure a network security group rule that allows traffic on TCP port 1433. In questo modo le connessioni a SQL Server su internet.This enables connections to SQL Server over the internet.

    $NsgRuleSQL = New-AzureRmNetworkSecurityRuleConfig -Name "MSSQLRule"  -Protocol Tcp `
       -Direction Inbound -Priority 1001 -SourceAddressPrefix * -SourcePortRange * `
       -DestinationAddressPrefix * -DestinationPortRange 1433 -Access Allow
    
  3. Quindi creare il gruppo di sicurezza di rete.Then create the network security group.

    $Nsg = New-AzureRmNetworkSecurityGroup -ResourceGroupName $ResourceGroupName `
       -Location $Location -Name $NsgName `
       -SecurityRules $NsgRuleRDP,$NsgRuleSQL
    

Creare l'interfaccia di reteCreate the network interface

È ora possibile creare l'interfaccia di rete che verrà usata dalla macchina virtuale.We are now ready to create the network interface that our virtual machine will use. Viene chiamato il New AzureRmNetworkInterface cmdlet per creare l'interfaccia di rete nel gruppo di risorse creato in precedenza e con il nome, la posizione, la subnet e l'indirizzo IP pubblico definito in precedenza.We call the New-AzureRmNetworkInterface cmdlet to create our network interface in the resource group created earlier and with the name, location, subnet and public IP address previously defined.

Eseguire il cmdlet seguente per creare l'interfaccia di rete.Execute the following cmdlet to create your network interface.

$Interface = New-AzureRmNetworkInterface -Name $InterfaceName `
   -ResourceGroupName $ResourceGroupName -Location $Location `
   -SubnetId $VNet.Subnets[0].Id -PublicIpAddressId $PublicIp.Id `
   -NetworkSecurityGroupId $Nsg.Id

Configurare un oggetto VMConfigure a VM object

Dopo avere definito le risorse di archiviazione e di rete, è possibile definire le risorse di calcolo per la macchina virtuale.Now that we have storage and network resources defined, we are ready to define compute resources for the virtual machine. Per questa esercitazione è specificare varie proprietà del sistema operativo e dimensioni della macchina virtuale, specificare l'interfaccia di rete che abbiamo creato in precedenza, definire l'archiviazione blob e quindi specificare il disco del sistema operativo.For our tutorial, we specify the virtual machine size and various operating system properties, specify the network interface that we previously created, define blob storage, and then specify the operating system disk.

Creare l'oggetto macchina virtualeCreate the VM object

Avviare specificando le dimensioni della macchina virtuale.Start by specifying the virtual machine size. Per questa esercitazione verrà specificata l'opzione DS13.For this tutorial, we are specifying a DS13. Viene chiamato il New AzureRmVMConfig per creare un oggetto macchina virtuale può essere configurato con il nome e una dimensione definita utilizzando le variabili che è stato inizializzato in precedenza.We call the New-AzureRmVMConfig cmdlet to create a configurable virtual machine object with the name and size defined using the variables that you previously initialized.

Eseguire il cmdlet seguente per creare l'oggetto macchina virtuale.Execute the following cmdlet to create the virtual machine object.

$VirtualMachine = New-AzureRmVMConfig -VMName $VMName -VMSize $VMSize

Creare un oggetto credenziali per includere il nome e la password per le credenziali di amministratore localeCreate a credential object to hold the name and password for the local administrator credentials

Prima di configurare le proprietà del sistema operativo per la macchina virtuale, è necessario specificare le credenziali per l'account di amministratore locale sotto forma di stringa sicura.Before we can set the operating system properties for the virtual machine, we need to supply the credentials for the local administrator account as a secure string. A tale scopo, utilizzare il Get-Credential cmdlet.To accomplish this, use the Get-Credential cmdlet.

Eseguire il cmdlet seguente e, nella finestra di richiesta delle credenziali di PowerShell, digitare il nome e una password da utilizzare per l'account administrator locale nella macchina virtuale.Execute the following cmdlet and, in the PowerShell credential request window, type the name and password to use for the local administrator account in the virtual machine.

$Credential = Get-Credential -Message "Type the name and password of the local administrator account."

Configurare le proprietà del sistema operativo per la macchina virtualeSet the operating system properties for the virtual machine

Ora è possibile impostare le proprietà del sistema operativo della macchina virtuale con Set AzureRmVMOperatingSystem cmdlet per impostare il tipo del sistema operativo di Windows, richiedono il agente della macchina virtuale a tal fine, specificare che il cmdlet Abilita aggiornamento automatico e impostare il nome della macchina virtuale, il nome del computer e le credenziali usando le variabili che è stato inizializzato in precedenza.Now we are ready to set the virtual machine's operating system properties with Set-AzureRmVMOperatingSystem cmdlet to set the type of operating system as Windows, require the virtual machine agent to be installed, specify that the cmdlet enables auto update and set the virtual machine name, the computer name, and the credential using the variables that you previously initialized.

Eseguire il cmdlet seguente per configurare le proprietà del sistema operativo per la macchina virtuale.Execute the following cmdlet to set the operating system properties for your virtual machine.

$VirtualMachine = Set-AzureRmVMOperatingSystem -VM $VirtualMachine `
   -Windows -ComputerName $ComputerName -Credential $Credential `
   -ProvisionVMAgent -EnableAutoUpdate

Aggiungere l'interfaccia di rete alla macchina virtualeAdd the network interface to the virtual machine

È aggiungere l'interfaccia di rete creata in precedenza per la macchina virtuale.Next, we add the network interface that we created previously to the virtual machine. Chiamare il Aggiungi AzureRmVMNetworkInterface cmdlet per aggiungere l'interfaccia di rete utilizzando la variabile di interfaccia di rete definita in precedenza.Call the Add-AzureRmVMNetworkInterface cmdlet to add the network interface using the network interface variable that you defined earlier.

Eseguire il cmdlet seguente per configurare l'interfaccia di rete per la macchina virtuale.Execute the following cmdlet to set the network interface for your virtual machine.

$VirtualMachine = Add-AzureRmVMNetworkInterface -VM $VirtualMachine -Id $Interface.Id

Impostare la posizione dell'archivio BLOB per il disco da usare per la macchina virtualeSet the blob storage location for the disk to be used by the virtual machine

Quindi, impostare il percorso di archiviazione blob per il disco da utilizzare per la macchina virtuale utilizzando le variabili definite in precedenza.Next, set the blob storage location for the disk to be used by the virtual machine using the variables that you defined earlier.

Eseguire il cmdlet seguente per impostare la posizione dell'archivio BLOB.Execute the following cmdlet to set the blob storage location.

$OSDiskUri = $StorageAccount.PrimaryEndpoints.Blob.ToString() + "vhds/" + $OSDiskName + ".vhd"

Configurare le proprietà del disco del sistema operativo per la macchina virtualeSet the operating system disk properties for the virtual machine

Quindi, impostare il sistema operativo proprietà del disco per la macchina virtuale.Next, set the operating system disk properties for the virtual machine. Utilizzare il Set AzureRmVMOSDisk cmdlet per specificare che il sistema operativo per la macchina virtuale verrà fornito da un'immagine, impostare la memorizzazione nella cache per sola lettura (perché SQL Server viene installato sul disco stesso) e definire la macchina virtuale nome e il disco del sistema operativo definita utilizzando le variabili definita in precedenza.Use the Set-AzureRmVMOSDisk cmdlet to specify that the operating system for the virtual machine will come from an image, to set caching to read only (because SQL Server is being installed on the same disk) and define the virtual machine name and the operating system disk defined using the variables that we defined earlier.

Eseguire il cmdlet seguente per configurare le proprietà del disco del sistema operativo per la macchina virtuale.Execute the following cmdlet to set the operating system disk properties for your virtual machine.

$VirtualMachine = Set-AzureRmVMOSDisk -VM $VirtualMachine -Name `
   $OSDiskName -VhdUri $OSDiskUri -Caching ReadOnly -CreateOption FromImage

Specificare l'immagine di piattaforma per la macchina virtualeSpecify the platform image for the virtual machine

L'ultimo passaggio della configurazione consiste nello specificare l'immagine di piattaforma per la macchina virtuale.Our last configuration step is to specify the platform image for our virtual machine. Per l'esercitazione viene usata l'immagine più recente per SQL Server 2016 CTP.For our tutorial, we are using the latest SQL Server 2016 CTP image. Utilizzare il Set AzureRmVMSourceImage cmdlet per utilizzare questa immagine, come definito dalle variabili definite in precedenza.Use the Set-AzureRmVMSourceImage cmdlet to use this image as defined by the variables that you defined earlier.

Eseguire il cmdlet seguente per specificare l'immagine di piattaforma per la macchina virtuale.Execute the following cmdlet to specify the platform image for your virtual machine.

$VirtualMachine = Set-AzureRmVMSourceImage -VM $VirtualMachine `
   -PublisherName $PublisherName -Offer $OfferName `
   -Skus $Sku -Version $Version

Creare la macchina virtuale SQLCreate the SQL VM

Al termine della procedura di configurazione, è possibile creare la macchina virtuale.Now that you have finished the configuration steps, you are ready to create the virtual machine. Utilizzare il New AzureRmVM cmdlet per creare la macchina virtuale utilizzando le variabili che sono state definite.Use the New-AzureRmVM cmdlet to create the virtual machine using the variables that we have defined.

Eseguire il cmdlet seguente per creare la macchina virtuale.Execute the following cmdlet to create your virtual machine.

New-AzureRmVM -ResourceGroupName $ResourceGroupName -Location $Location -VM $VirtualMachine

La macchina virtuale viene creata.The virtual machine is created.

Nota

È possibile ignorare l'errore sulla diagnostica bot.You can ignore the error about the bot diagnostics. Viene creato un account di archiviazione standard per la diagnostica di avvio, perché l'account di archiviazione specificato per il disco della macchina virtuale è un account di archiviazione premium.A standard storage account is created for boot diagnostics, because the specified storage account for the virtual machine's disk is a premium storage account.

Installare l'agente Iaas SQLInstall the SQL Iaas Agent

Macchine virtuali di SQL Server supporta le funzionalità di gestione automatica con il estensione di SQL Server IaaS Agent.SQL Server virtual machines support automated management features with the SQL Server IaaS Agent Extension. Per installare l'agente nella nuova macchina virtuale, eseguire il comando seguente dopo averlo creato.To install the agent on the new VM, run the following command after it is created.

Set-AzureRmVMSqlServerExtension -ResourceGroupName $ResourceGroupName -VMName $VMName -name "SQLIaasExtension" -version "1.2" -Location $Location

Rimuovere una macchina virtuale di testRemove a test VM

Se non è necessaria la macchina virtuale in esecuzione continuamente, per evitare costi non necessari, arrestata quando non è in uso.If you do not need the VM running continually, you can avoid unnecessary charges by stopping it when not in use. Il comando seguente arresta la macchina virtuale, ma lascia disponibile per un utilizzo futuro.The following command stops the VM but leaves it available for future use.

Stop-AzureRmVM -Name $VMName -ResourceGroupName $ResourceGroupName

È inoltre possibile eliminare definitivamente tutte le risorse associate alla macchina virtuale con il Remove AzureRmResourceGroup comando.You can also permanently delete all resources associated with the virtual machine with the Remove-AzureRmResourceGroup command. In questo modo viene eliminata definitivamente anche la macchina virtuale, quindi usare questo comando con cautela.This permanently deletes the virtual machine as well, so use this command with care.

Script di esempioExample script

Lo script seguente contiene lo script PowerShell completo per l'esercitazione.The following script contains the complete PowerShell script for this tutorial. Si presuppone che sia stata già impostata la sottoscrizione di Azure da usare con i comandi Add-AzureRmAccount e Select-AzureRmSubscription.It assumes that you have already setup the Azure subscription to use with the Add-AzureRmAccount and Select-AzureRmSubscription commands.

# Variables

## Global
$Location = "SouthCentralUS"
$ResourceGroupName = "sqlvm2"

## Storage
$StorageName = $ResourceGroupName + "storage"
$StorageSku = "Premium_LRS"

## Network
$InterfaceName = $ResourceGroupName + "ServerInterface"
$NsgName = $ResourceGroupName + "nsg"
$VNetName = $ResourceGroupName + "VNet"
$SubnetName = "Default"
$VNetAddressPrefix = "10.0.0.0/16"
$VNetSubnetAddressPrefix = "10.0.0.0/24"
$TCPIPAllocationMethod = "Dynamic"
$DomainName = $ResourceGroupName

##Compute
$VMName = $ResourceGroupName + "VM"
$ComputerName = $ResourceGroupName + "Server"
$VMSize = "Standard_DS13"
$OSDiskName = $VMName + "OSDisk"

##Image
$PublisherName = "MicrosoftSQLServer"
$OfferName = "SQL2017-WS2016"
$Sku = "SQLDEV"
$Version = "latest"

# Resource Group
New-AzureRmResourceGroup -Name $ResourceGroupName -Location $Location

# Storage
$StorageAccount = New-AzureRmStorageAccount -ResourceGroupName $ResourceGroupName -Name $StorageName -SkuName $StorageSku -Kind "Storage" -Location $Location

# Network
$SubnetConfig = New-AzureRmVirtualNetworkSubnetConfig -Name $SubnetName -AddressPrefix $VNetSubnetAddressPrefix
$VNet = New-AzureRmVirtualNetwork -Name $VNetName -ResourceGroupName $ResourceGroupName -Location $Location -AddressPrefix $VNetAddressPrefix -Subnet $SubnetConfig
$PublicIp = New-AzureRmPublicIpAddress -Name $InterfaceName -ResourceGroupName $ResourceGroupName -Location $Location -AllocationMethod $TCPIPAllocationMethod -DomainNameLabel $DomainName
$NsgRuleRDP = New-AzureRmNetworkSecurityRuleConfig -Name "RDPRule" -Protocol Tcp -Direction Inbound -Priority 1000 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange 3389 -Access Allow
$NsgRuleSQL = New-AzureRmNetworkSecurityRuleConfig -Name "MSSQLRule"  -Protocol Tcp -Direction Inbound -Priority 1001 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange 1433 -Access Allow
$Interface = New-AzureRmNetworkInterface -Name $InterfaceName -ResourceGroupName $ResourceGroupName -Location $Location -SubnetId $VNet.Subnets[0].Id -PublicIpAddressId $PublicIp.Id -NetworkSecurityGroupId $Nsg.Id

# Compute
$VirtualMachine = New-AzureRmVMConfig -VMName $VMName -VMSize $VMSize
$Credential = Get-Credential -Message "Type the name and password of the local administrator account."
$VirtualMachine = Set-AzureRmVMOperatingSystem -VM $VirtualMachine -Windows -ComputerName $ComputerName -Credential $Credential -ProvisionVMAgent -EnableAutoUpdate #-TimeZone = $TimeZone
$VirtualMachine = Add-AzureRmVMNetworkInterface -VM $VirtualMachine -Id $Interface.Id
$OSDiskUri = $StorageAccount.PrimaryEndpoints.Blob.ToString() + "vhds/" + $OSDiskName + ".vhd"
$VirtualMachine = Set-AzureRmVMOSDisk -VM $VirtualMachine -Name $OSDiskName -VhdUri $OSDiskUri -Caching ReadOnly -CreateOption FromImage

# Image
$VirtualMachine = Set-AzureRmVMSourceImage -VM $VirtualMachine -PublisherName $PublisherName -Offer $OfferName -Skus $Sku -Version $Version

# Create the VM in Azure
New-AzureRmVM -ResourceGroupName $ResourceGroupName -Location $Location -VM $VirtualMachine

# Add the SQL IaaS Extension
Set-AzureRmVMSqlServerExtension -ResourceGroupName $ResourceGroupName -VMName $VMName -name "SQLIaasExtension" -version "1.2" -Location $Location

Passaggi successiviNext steps

Dopo aver creata la macchina virtuale, è possibile:After the virtual machine is created, you can: