Azure PowerShell を使用して SQL Server 仮想マシンをプロビジョニングする方法How to provision SQL Server virtual machines with Azure PowerShell

このガイドでは、Azure PowerShell を使用して Windows SQL Server VM を作成するオプションについて説明します。This guide explains your options to create Windows SQL Server VMs with Azure PowerShell. より多くの規定値を使用し、効率化された Azure PowerShell の例については、SQL VM の Azure PowerShell クイック スタートを参照してください。For a streamlined Azure PowerShell example with more default values, see the SQL VM Azure PowerShell quickstart.

Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。If you don't have an Azure subscription, create a free account before you begin.

注意

この記事は、新しい Azure PowerShell Az モジュールを使用するために更新されました。This article has been updated to use the new Azure PowerShell Az module. AzureRM モジュールはまだ使用でき、少なくとも 2020 年 12 月までは引き続きバグ修正が行われます。You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Az モジュールと AzureRM の互換性の詳細については、「Introducing the new Azure PowerShell Az module (新しい Azure PowerShell Az モジュールの概要)」を参照してください。To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Az モジュールのインストール手順については、Azure PowerShell のインストールを参照してください。For Az module installation instructions, see Install Azure PowerShell.

サブスクリプションの構成Configure your subscription

  1. PowerShell を開き、Connect-AzAccount コマンドを実行することで、Azure アカウントへのアクセスを確立します。Open PowerShell and establish access to your Azure account by running the Connect-AzAccount command.

    Connect-AzAccount
    
  2. 資格情報を入力するための画面が表示されます。You should see a screen to enter your credentials. Azure ポータルへのサインインに使用しているものと同じ電子メールとパスワードを使用します。Use the same email and password that you use to sign in to the Azure portal.

イメージの変数の定義Define image variables

値を再利用してスクリプトの作成を簡略化するには、まず、変数の数を定義します。To reuse values and simplify script creation, start by defining a number of variables. パラメーターの値は適宜変更してください。ただし、指定した値に変更を加える際は、名前の長さや特殊文字に関連した制限に注意してください。Change the parameter values as you want, but be aware of naming restrictions related to name lengths and special characters when modifying the values provided.

場所とリソース グループLocation and resource group

データのリージョンと、他の VM リソースの作成先となるリソース グループを定義します。Define the data region and the resource group into which you create the other VM resources.

必要に応じて変更してから、以下のコマンドレットを実行し、これらの変数を初期化します。Modify as you want and then run these cmdlets to initialize these variables.

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

ストレージのプロパティStorage properties

ストレージ アカウントと、仮想マシンで使用するストレージの種類を定義します。Define the storage account and the type of storage to be used by the virtual machine.

必要に応じて変更してから、以下のコマンドレットを実行し、これらの変数を初期化します。Modify as you want and then run the following cmdlet to initialize these variables. 運用環境のワークロードには Premium SSD を使用することをお勧めします。We recommend using premium SSDs for production workloads.

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

Network propertiesNetwork properties

仮想マシンのネットワークで使用するプロパティを定義します。Define the properties to be used by the network in the virtual machine.

  • LinuxNetwork interface
  • TCP/IP の割り当て方法TCP/IP allocation method
  • 仮想ネットワーク名Virtual network name
  • 仮想サブネット名Virtual subnet name
  • 仮想ネットワークの IP アドレスの範囲Range of IP addresses for the virtual network
  • サブネットの IP アドレスの範囲Range of IP addresses for the subnet
  • パブリック ドメイン名のラベルPublic domain name label

必要に応じて変更してから、このコマンドレットを実行し、これらの変数を初期化します。Modify as you want and then run this 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

仮想マシン プロパティVirtual machine properties

仮想マシン名、コンピューター名、仮想マシン サイズ、仮想マシンのオペレーティング システム ディスク名を定義します。Define the virtual machine name, the computer name, the virtual machine size, and the operating system disk name for the virtual machine.

必要に応じて変更してから、このコマンドレットを実行し、これらの変数を初期化します。Modify as you want and then run this cmdlet to initialize these variables.

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

SQL Server イメージを選択します。Choose a SQL Server image

仮想マシンに使用するイメージは、以下の変数を使用して定義します。Use the following variables to define the SQL Server image to use for the virtual machine.

  1. まず、Get-AzVMImageOffer コマンドを使用して、提供されているすべての SQL Server イメージを一覧表示します。First, list out all of the SQL Server image offerings with the Get-AzVMImageOffer command. このコマンドにより、Azure Portal で提供されている現在のイメージが一覧表示されます。また、PowerShell でのみインストールできる古いイメージも一覧表示されます。This command lists current images that are available in the Azure Portal and also older images that can only be installed with PowerShell:

    Get-AzVMImageOffer -Location $Location -Publisher 'MicrosoftSQLServer'
    
  2. このチュートリアルでは、次の変数を使用して、Windows Server 2016 上の SQL Server 2017 を指定します。For this tutorial, use the following variables to specify SQL Server 2017 on Windows Server 2016.

    $OfferName = "SQL2017-WS2016"
    $PublisherName = "MicrosoftSQLServer"
    $Version = "latest"
    
  3. 次に、お使いのサービスで使用可能なエディションを一覧表示します。Next, list the available editions for your offer.

    Get-AzVMImageSku -Location $Location -Publisher 'MicrosoftSQLServer' -Offer $OfferName | Select Skus
    
  4. このチュートリアルでは、SQL Server 2017 Developer エディション (SQLDEV) を使用します。For this tutorial, use the SQL Server 2017 Developer edition (SQLDEV). Developer エディションはテストと開発のために無料でライセンスされます。VM を実行するコストのみを支払います。The Developer edition is freely licensed for testing and development, and you only pay for the cost of running the VM.

    $Sku = "SQLDEV"
    

リソース グループの作成Create a resource group

Resource Manager デプロイ モデルで最初に作成するオブジェクトはリソース グループです。With the Resource Manager deployment model, the first object that you create is the resource group. New-AzResourceGroup コマンドレットを使用して、Azure リソース グループとそのリソースを作成します。Use the New-AzResourceGroup cmdlet to create an Azure resource group and its resources. 前に初期化した、リソース グループの名前と場所の変数を指定します。Specify the variables that you previously initialized for the resource group name and location.

このコマンドレットを実行し、新しいリソース グループを作成します。Run this cmdlet to create your new resource group.

New-AzResourceGroup -Name $ResourceGroupName -Location $Location

ストレージ アカウントの作成Create a storage account

仮想マシンには、オペレーティング システム ディスク用と SQL Server (データおよびログ ファイル) 用のストレージ リソースが必要となります。The virtual machine requires storage resources for the operating system disk and for the SQL Server data and log files. 単純化するために、両方の用途を兼ねた単一のディスクを作成します。For simplicity, you'll create a single disk for both. 後から Add-Azure Disk コマンドレットを使用して追加のディスクを接続すると、SQL Server のデータ ファイルとログ ファイルを専用のディスクに格納できます。You can attach additional disks later using the Add-Azure Disk cmdlet to place your SQL Server data and log files on dedicated disks. New-AzStorageAccount コマンドレットを使用して、新しいリソース グループ内に標準ストレージ アカウントを作成します。Use the New-AzStorageAccount cmdlet to create a standard storage account in your new resource group. 前に初期化した、ストレージ アカウント名、ストレージ SKU 名、および場所の変数を指定します。Specify the variables that you previously initialized for the storage account name, storage Sku name, and location.

このコマンドレットを実行し、新しいストレージ アカウントを作成します。Run this cmdlet to create your new storage account.

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

ヒント

ストレージ アカウントを作成するには数分かかることがあります。Creating the storage account can take a few minutes.

ネットワーク リソースを作成するCreate network resources

ネットワーク接続を確保するためには、仮想マシンにさまざまなネットワーク リソースが必要となります。The virtual machine requires a number of network resources for network connectivity.

  • 個々の仮想マシンに仮想ネットワークが必要となります。Each virtual machine requires a virtual network.
  • 仮想ネットワークには少なくとも 1 つのサブネットが定義されている必要があります。A virtual network must have at least one subnet defined.
  • パブリックまたはプライベートの IP アドレスを持つネットワーク インターフェイスが定義されている必要があります。A network interface must be defined with either a public or a private IP address.

仮想ネットワークのサブネット構成の作成Create a virtual network subnet configuration

まず、仮想ネットワークのサブネット構成を作成します。Start by creating a subnet configuration for your virtual network. このチュートリアルでは、New-AzVirtualNetworkSubnetConfig コマンドレットを使用して、既定のサブネットを作成します。For this tutorial, create a default subnet using the New-AzVirtualNetworkSubnetConfig cmdlet. 前に初期化した、サブネット名とアドレス プレフィックスの変数を指定します。Specify the variables that you previously initialized for the subnet name and address prefix.

注意

サブネット名とアドレス プレフィックス以外のプロパティもこのコマンドレットで定義できますが、このチュートリアルの範囲を超えるため、ここでは取り上げません。You can define additional properties of the virtual network subnet configuration using this cmdlet, but that is beyond the scope of this tutorial.

このコマンドレットを実行して、仮想サブネットの構成を作成します。Run this cmdlet to create your virtual subnet configuration.

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

仮想ネットワークの作成Create a virtual network

次に、New-AzVirtualNetwork コマンドレットを使用して、新しいリソース グループ内に仮想ネットワークを作成します。Next, create your virtual network in your new resource group using the New-AzVirtualNetwork cmdlet. 前に初期化した、名前、場所、およびアドレス プレフィックスの変数を指定します。Specify the variables that you previously initialized for the name, location, and address prefix. 前の手順で定義したサブネット構成を使用します。Use the subnet configuration that you defined in the previous step.

このコマンドレットを実行して、仮想ネットワークを作成します。Run this cmdlet to create your virtual network.

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

パブリック IP アドレスの作成Create the public IP address

これで仮想ネットワークが定義されたので、仮想マシンへの接続用の IP アドレスを構成する必要があります。Now that your virtual network is defined, you must configure an IP address for connectivity to the virtual machine. このチュートリアルでは、インターネット接続をサポートするために、動的 IP アドレス指定を使用してパブリック IP アドレスを作成します。For this tutorial, create a public IP address using dynamic IP addressing to support Internet connectivity. New-AzPublicIpAddress コマンドレットを使用して、新しいリソース グループ内にパブリック IP アドレスを作成します。Use the New-AzPublicIpAddress cmdlet to create the public IP address in your new resource group. 前に初期化した、名前、場所、割り当て方法、および DNS ドメイン名ラベルの変数を指定します。Specify the variables that you previously initialized for the name, location, allocation method, and DNS domain name label.

注意

パブリック IP アドレスのプロパティもこのコマンドレットで定義できますが、このチュートリアルの範囲を超えるため、ここでは取り上げません。You can define additional properties of the public IP address using this cmdlet, but that is beyond the scope of this initial tutorial. またプライベート アドレスや静的アドレスを作成することもできますが、このチュートリアルの範囲を超えるため、同様に説明を省略します。You could also create a private address or an address with a static address, but that is also beyond the scope of this tutorial.

このコマンドレットを実行して、パブリック IP アドレスを作成します。Run this cmdlet to create your public IP address.

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

ネットワーク セキュリティ グループの作成Create the network security group

VM と SQL Server トラフィックを保護するには、ネットワーク セキュリティ グループを作成します。To secure the VM and SQL Server traffic, create a network security group.

  1. まず、リモート デスクトップ接続のための RDP 用ネットワーク セキュリティ グループ ルールを作成します。First, create a network security group rule for RDP to allow remote desktop connections.

    $NsgRuleRDP = New-AzNetworkSecurityRuleConfig -Name "RDPRule" -Protocol Tcp `
       -Direction Inbound -Priority 1000 -SourceAddressPrefix * -SourcePortRange * `
       -DestinationAddressPrefix * -DestinationPortRange 3389 -Access Allow
    
  2. TCP ポート 1433 でトラフィックを許可するネットワーク セキュリティ グループ ルールを構成します。Configure a network security group rule that allows traffic on TCP port 1433. そうすることで、インターネット経由での SQL Server への接続が可能になります。Doing so enables connections to SQL Server over the internet.

    $NsgRuleSQL = New-AzNetworkSecurityRuleConfig -Name "MSSQLRule"  -Protocol Tcp `
       -Direction Inbound -Priority 1001 -SourceAddressPrefix * -SourcePortRange * `
       -DestinationAddressPrefix * -DestinationPortRange 1433 -Access Allow
    
  3. ネットワーク セキュリティ グループを作成します。Create the network security group.

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

ネットワーク インターフェイスの作成Create the network interface

これで、仮想マシンのネットワーク インターフェイスを作成する準備が整いました。You're now ready to create the network interface for your virtual machine. New-AzNetworkInterface コマンドレットを使用して、新しいリソース グループ内にネットワーク インターフェイスを作成します。Use the New-AzNetworkInterface cmdlet to create your network interface in your new resource group. 前に定義した名前、場所、サブネット、およびパブリック IP アドレスを指定します。Specify the name, location, subnet, and public IP address previously defined.

このコマンドレットを実行して、ネットワーク インターフェイスを作成します。Run this cmdlet to create your network interface.

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

VM オブジェクトの構成Configure a VM object

これでストレージとネットワーク リソースが定義されたので、仮想マシンのコンピューティング リソースを定義する準備が整いました。Now that storage and network resources are defined, you're ready to define compute resources for the virtual machine.

  • 仮想マシンのサイズと、さまざまなオペレーティング システムのプロパティを指定します。Specify the virtual machine size and various operating system properties.
  • 前に作成したネットワーク インターフェイスを指定します。Specify the network interface that you previously created.
  • BLOB ストレージを定義します。Define blob storage.
  • オペレーティング システム ディスクを指定します。Specify the operating system disk.

VM オブジェクトの作成Create the VM object

まず、仮想マシンのサイズを指定します。Start by specifying the virtual machine size. このチュートリアルでは DS13 を指定します。For this tutorial, specify a DS13. New-AzVMConfig コマンドレットを使用して、構成可能な仮想マシン オブジェクトを作成します。Use the New-AzVMConfig cmdlet to create a configurable virtual machine object. 前に初期化した、名前とサイズの変数を指定します。Specify the variables that you previously initialized for the name and size.

このコマンドレットを実行して、仮想マシン オブジェクトを作成します。Run this cmdlet to create the virtual machine object.

$VirtualMachine = New-AzVMConfig -VMName $VMName -VMSize $VMSize

ローカル管理者の資格情報の名前とパスワードを保持する資格情報オブジェクトを作成するCreate a credential object to hold the name and password for the local administrator credentials

仮想マシンのオペレーティング システムのプロパティを設定する前に、ローカル管理者アカウントの資格情報を、セキュリティで保護された文字列で指定する必要があります。Before you can set the operating system properties for the virtual machine, you must supply the credentials for the local administrator account as a secure string. ここでは、Get-Credential コマンドレットを使用します。To accomplish this, use the Get-Credential cmdlet.

次のコマンドレットを実行し、PowerShell の資格情報要求ウィンドウで、仮想マシンのローカル管理者アカウントに使用する名前とパスワードを入力します。Run 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."

仮想マシンに使用するオペレーティング システムのプロパティ設定Set the operating system properties for the virtual machine

Set-AzVMOperatingSystem コマンドレットを使用して仮想マシンのオペレーティング システムのプロパティを設定する準備ができました。Now you're ready to set the virtual machine's operating system properties with the Set-AzVMOperatingSystem cmdlet.

  • オペレーティング システムの種類は Windows として設定します。Set the type of operating system as Windows.
  • 仮想マシン エージェントがインストールされる必要があります。Require the virtual machine agent to be installed.
  • このコマンドレットで自動更新を有効にすることを指定します。Specify that the cmdlet enables auto update.
  • 前に初期化した、仮想マシン名、コンピューター名、および資格情報の変数を指定します。Specify the variables that you previously initialized for the virtual machine name, the computer name, and the credential.

このコマンドレットを実行し、仮想マシンのオペレーティング システムのプロパティを設定します。Run this cmdlet to set the operating system properties for your virtual machine.

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

仮想マシンにネットワーク インターフェイスを追加するAdd the network interface to the virtual machine

次に、前に定義した変数を使用して Add-AzVMNetworkInterface コマンドレットを実行して、ネットワーク インターフェイスを追加します。Next, use the Add-AzVMNetworkInterface cmdlet to add the network interface using the variable that you defined earlier.

このコマンドレットを実行し、仮想マシンのネットワーク インターフェイスを設定します。Run this cmdlet to set the network interface for your virtual machine.

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

仮想マシンで使用するディスクの Blob Storage の場所を設定するSet the blob storage location for the disk to be used by the virtual machine

次に、前に定義した変数を使用して、VM のディスク用の BLOB ストレージの場所を設定します。Next, set the blob storage location for the VM's disk using the variables that you defined earlier.

このコマンドレットを実行し、BLOB ストレージの場所を設定します。Run this cmdlet to set the blob storage location.

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

仮想マシンに使用するオペレーティング システムのディスクのプロパティ設定Set the operating system disk properties for the virtual machine

次に、Set-AzVMOSDisk コマンドレットを使用して、仮想マシンのオペレーティング システム ディスクのプロパティを設定します。Next, set the operating system disk properties for the virtual machine using the Set-AzVMOSDisk cmdlet.

  • 仮想マシンのオペレーティング システムはイメージから取得することを指定します。Specify that the operating system for the virtual machine will come from an image.
  • キャッシュは読み取り専用に設定します (同じディスクに SQL Server がインストールされるため)。Set caching to read only (because SQL Server is being installed on the same disk).
  • 前に初期化した、VM の名前とオペレーティング システム ディスクの変数を指定します。Specify the variables that you previously initialized for the VM name and the operating system disk.

このコマンドレットを実行し、仮想マシンのオペレーティング システム ディスクのプロパティを設定します。Run this cmdlet to set the operating system disk properties for your virtual machine.

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

仮想マシンのプラットフォーム イメージを指定するSpecify the platform image for the virtual machine

最後の構成手順は、仮想マシン用のプラットフォーム イメージを指定することです。The last configuration step is to specify the platform image for your virtual machine. このチュートリアルでは、最新の SQL Server 2016 CTP イメージを使用します。For this tutorial, use the latest SQL Server 2016 CTP image. 前に定義した変数を使用して Set-AzVMSourceImage コマンドレットを実行して、このイメージを使用します。Use the Set-AzVMSourceImage cmdlet to use this image with the variables that you defined earlier.

このコマンドレットを実行し、仮想マシンのプラットフォーム イメージを指定します。Run this cmdlet to specify the platform image for your virtual machine.

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

SQL VM の作成Create the SQL VM

これで構成手順を終えたので、仮想マシンを作成する準備が整いました。Now that you've finished the configuration steps, you're ready to create the virtual machine. 定義した変数を使用して New-AzVM コマンドレットを実行して、仮想マシンを作成します。Use the New-AzVM cmdlet to create the virtual machine using the variables that you defined.

ヒント

VM の作成には数分かかることがあります。Creating the VM can take a few minutes.

このコマンドレットを実行して仮想マシンを作成します。Run this cmdlet to create your virtual machine.

New-AzVM -ResourceGroupName $ResourceGroupName -Location $Location -VM $VirtualMachine

これで仮想マシンが作成されました。The virtual machine is created.

注意

ブート診断に関するエラーが表示される場合、そのエラーは無視できます。If you get an error about boot diagnostics, you can ignore it. 仮想マシンのディスク用に指定したストレージ アカウントは Premium Storage アカウントであるため、ブート診断用に Standard Storage アカウントが作成されることに注意してください。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.

SQL Iaas Agent のインストールInstall the SQL Iaas Agent

SQL Server 仮想マシンでは、SQL Server IaaS エージェントの拡張機能を使用して自動管理機能をサポートします。SQL Server virtual machines support automated management features with the SQL Server IaaS Agent Extension. 新しい VM にエージェントをインストールするには、VM の作成後に次のコマンドを実行します。To install the agent on the new VM, run the following command after it's created.

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

VM の停止または削除Stop or remove a VM

VM を継続的に実行する必要がない場合は、使用中でないときに停止することで、不要な料金の発生を回避できます。If you don't need the VM to run continuously, you can avoid unnecessary charges by stopping it when not in use. 次のコマンドでは、VM を停止しますが、後から使用できるように残しておきます。The following command stops the VM but leaves it available for future use.

Stop-AzVM -Name $VMName -ResourceGroupName $ResourceGroupName

Remove-AzResourceGroup コマンドを使用して、仮想マシンに関連付けられているすべてのリソースを完全に削除することもできます。You can also permanently delete all resources associated with the virtual machine with the Remove-AzResourceGroup command. そのようにすると仮想マシンも完全に削除されるため、このコマンドは注意して使用してください。Doing so permanently deletes the virtual machine as well, so use this command with care.

サンプル スクリプトExample script

このチュートリアルで使用した PowerShell スクリプト全体は、次のようになっています。The following script contains the complete PowerShell script for this tutorial. 使用する Azure サブスクリプションは、Connect-AzAccount コマンドと Select-AzSubscription コマンドによって既に設定されていることを前提とします。It assumes that you have already set up the Azure subscription to use with the Connect-AzAccount and Select-AzSubscription 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-AzResourceGroup -Name $ResourceGroupName -Location $Location

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

# Network
$SubnetConfig = New-AzVirtualNetworkSubnetConfig -Name $SubnetName -AddressPrefix $VNetSubnetAddressPrefix
$VNet = New-AzVirtualNetwork -Name $VNetName -ResourceGroupName $ResourceGroupName -Location $Location -AddressPrefix $VNetAddressPrefix -Subnet $SubnetConfig
$PublicIp = New-AzPublicIpAddress -Name $InterfaceName -ResourceGroupName $ResourceGroupName -Location $Location -AllocationMethod $TCPIPAllocationMethod -DomainNameLabel $DomainName
$NsgRuleRDP = New-AzNetworkSecurityRuleConfig -Name "RDPRule" -Protocol Tcp -Direction Inbound -Priority 1000 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange 3389 -Access Allow
$NsgRuleSQL = New-AzNetworkSecurityRuleConfig -Name "MSSQLRule"  -Protocol Tcp -Direction Inbound -Priority 1001 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange 1433 -Access Allow
$Nsg = New-AzNetworkSecurityGroup -ResourceGroupName $ResourceGroupName -Location $Location -Name $NsgName -SecurityRules $NsgRuleRDP,$NsgRuleSQL
$Interface = New-AzNetworkInterface -Name $InterfaceName -ResourceGroupName $ResourceGroupName -Location $Location -SubnetId $VNet.Subnets[0].Id -PublicIpAddressId $PublicIp.Id -NetworkSecurityGroupId $Nsg.Id

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

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

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

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

次の手順Next steps

これで仮想マシンが作成され、以下のことを実行できます。After the virtual machine is created, you can: