PowerShell gebruiken voor het maken van een beheerd exemplaar
Van toepassing op: Azure SQL Managed Instance
In dit voorbeeld van een PowerShell-script wordt een beheerd exemplaar gemaakt in een toegewezen subnet binnen een nieuw virtueel netwerk. Ook worden er een routetabel en een netwerkbeveiligingsgroep voor het virtuele netwerk geconfigureerd. Zodra het script is uitgevoerd, kunt u toegang krijgen tot het beheerde exemplaar vanuit het virtuele netwerk of vanuit een on-premises omgeving. Zie Azure VM configureren om verbinding te maken met een met Azure SQL Database beheerd exemplaar en On-premises een punt-naar-site-verbinding met een met Azure SQL beheerd exemplaar configureren.
Belangrijk
Zie ondersteunde regio's en ondersteunde abonnementstypen voor beperkingen.
Azure Cloud Shell gebruiken
Azure host Azure Cloud Shell, een interactieve shell-omgeving die u via uw browser kunt gebruiken. U kunt Bash of PowerShell gebruiken met Cloud Shell om met Azure-services te werken. U kunt de vooraf geïnstalleerde Cloud Shell-opdrachten gebruiken om de code in dit artikel uit te voeren zonder dat u iets hoeft te installeren in uw lokale omgeving.
Om Azure Cloud Shell op te starten:
Optie | Voorbeeld/koppeling |
---|---|
Selecteer Nu proberen in de rechterbovenhoek van een codeblok. Als u Uitproberen selecteert, wordt de code niet automatisch gekopieerd naar Cloud Shell. | |
Ga naar https://shell.azure.com, of selecteer de knop Cloud Shell starten om Cloud Shell in uw browser te openen. | |
Klik op de knop Cloud Shell in het menu in de balk rechtsboven in de Azure-portal. |
Om de code in dit artikel in Azure Cloud Shell uit te voeren:
Start Cloud Shell.
Selecteer de knop Kopiëren op een codeblok om de code te kopiëren.
Plak de code in de Cloud Shell-sessie door Ctrl+Shift+V te selecteren in Windows en Linux of door Cmd+Shift+V in macOS te selecteren.
Selecteer Invoeren om de code uit te voeren.
Als u PowerShell lokaal wilt installeren en gebruiken, is voor deze zelfstudie Azure PowerShell 1.4.0 of hoger vereist. Als u PowerShell wilt upgraden, raadpleegt u De Azure PowerShell-module installeren. Als u PowerShell lokaal uitvoert, moet u ook Connect-AzAccount
uitvoeren om verbinding te kunnen maken met Azure.
Voorbeeldscript
$NSnetworkModels = "Microsoft.Azure.Commands.Network.Models"
$NScollections = "System.Collections.Generic"
Connect-AzAccount
# The SubscriptionId in which to create these objects
$SubscriptionId = ''
# Set the resource group name and location for your managed instance
$resourceGroupName = "myResourceGroup-$(Get-Random)"
$location = "eastus2"
# Set the networking values for your managed instance
$vNetName = "myVnet-$(Get-Random)"
$vNetAddressPrefix = "10.0.0.0/16"
$defaultSubnetName = "myDefaultSubnet-$(Get-Random)"
$defaultSubnetAddressPrefix = "10.0.0.0/24"
$miSubnetName = "myMISubnet-$(Get-Random)"
$miSubnetAddressPrefix = "10.0.0.0/24"
#Set the managed instance name for the new managed instance
$instanceName = "myMIName-$(Get-Random)"
# Set the admin login and password for your managed instance
$miAdminSqlLogin = "SqlAdmin"
$miAdminSqlPassword = "ChangeYourAdminPassword1"
# Set the managed instance service tier, compute level, and license mode
$edition = "General Purpose"
$vCores = 8
$maxStorage = 256
$computeGeneration = "Gen5"
$license = "LicenseIncluded" #"BasePrice" or LicenseIncluded if you have don't have SQL Server licence that can be used for AHB discount
# Set subscription context
Set-AzContext -SubscriptionId $SubscriptionId
# Create a resource group
$resourceGroup = New-AzResourceGroup -Name $resourceGroupName -Location $location -Tag @{Owner="SQLDB-Samples"}
# Configure virtual network, subnets, network security group, and routing table
$networkSecurityGroupMiManagementService = New-AzNetworkSecurityGroup `
-Name 'myNetworkSecurityGroupMiManagementService' `
-ResourceGroupName $resourceGroupName `
-location $location
$routeTableMiManagementService = New-AzRouteTable `
-Name 'myRouteTableMiManagementService' `
-ResourceGroupName $resourceGroupName `
-location $location
$virtualNetwork = New-AzVirtualNetwork `
-ResourceGroupName $resourceGroupName `
-Location $location `
-Name $vNetName `
-AddressPrefix $vNetAddressPrefix
Add-AzVirtualNetworkSubnetConfig `
-Name $miSubnetName `
-VirtualNetwork $virtualNetwork `
-AddressPrefix $miSubnetAddressPrefix `
-NetworkSecurityGroup $networkSecurityGroupMiManagementService `
-RouteTable $routeTableMiManagementService |
Set-AzVirtualNetwork
$virtualNetwork = Get-AzVirtualNetwork -Name $vNetName -ResourceGroupName $resourceGroupName
$subnet= $virtualNetwork.Subnets[0]
# Create a delegation
$subnet.Delegations = New-Object "$NScollections.List``1[$NSnetworkModels.PSDelegation]"
$delegationName = "dgManagedInstance" + (Get-Random -Maximum 1000)
$delegation = New-AzDelegation -Name $delegationName -ServiceName "Microsoft.Sql/managedInstances"
$subnet.Delegations.Add($delegation)
Set-AzVirtualNetwork -VirtualNetwork $virtualNetwork
$miSubnetConfigId = $subnet.Id
$allowParameters = @{
Access = 'Allow'
Protocol = 'Tcp'
Direction= 'Inbound'
SourcePortRange = '*'
SourceAddressPrefix = 'VirtualNetwork'
DestinationAddressPrefix = '*'
}
$denyInParameters = @{
Access = 'Deny'
Protocol = '*'
Direction = 'Inbound'
SourcePortRange = '*'
SourceAddressPrefix = '*'
DestinationPortRange = '*'
DestinationAddressPrefix = '*'
}
$denyOutParameters = @{
Access = 'Deny'
Protocol = '*'
Direction = 'Outbound'
SourcePortRange = '*'
SourceAddressPrefix = '*'
DestinationPortRange = '*'
DestinationAddressPrefix = '*'
}
Get-AzNetworkSecurityGroup `
-ResourceGroupName $resourceGroupName `
-Name "myNetworkSecurityGroupMiManagementService" |
Add-AzNetworkSecurityRuleConfig `
@allowParameters `
-Priority 1000 `
-Name "allow_tds_inbound" `
-DestinationPortRange 1433 |
Add-AzNetworkSecurityRuleConfig `
@allowParameters `
-Priority 1100 `
-Name "allow_redirect_inbound" `
-DestinationPortRange 11000-11999 |
Add-AzNetworkSecurityRuleConfig `
@denyInParameters `
-Priority 4096 `
-Name "deny_all_inbound" |
Add-AzNetworkSecurityRuleConfig `
@denyOutParameters `
-Priority 4096 `
-Name "deny_all_outbound" |
Set-AzNetworkSecurityGroup
# Create credentials
$secpassword = ConvertTo-SecureString $miAdminSqlPassword -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential ($miAdminSqlLogin, $secpassword)
# Create managed instance
New-AzSqlInstance -Name $instanceName `
-ResourceGroupName $resourceGroupName -Location $location -SubnetId $miSubnetConfigId `
-AdministratorCredential $credential `
-StorageSizeInGB $maxStorage -VCore $vCores -Edition $edition `
-ComputeGeneration $computeGeneration -LicenseType $license
# Clean up deployment
# Remove-AzResourceGroup -ResourceGroupName $resourceGroupName
Opschonen van implementatie
Gebruik de volgende opdracht om de resourcegroep en alle resources die eraan zijn gekoppeld te verwijderen.
Remove-AzResourceGroup -ResourceGroupName $resourcegroupname
Uitleg van het script
In dit script worden enkele van de volgende opdrachten gebruikt. Voor meer informatie over de gebruikte en andere opdrachten in de onderstaande tabel klikt u op de koppelingen naar documentatie over een specifieke opdracht.
Command | Opmerkingen |
---|---|
New-AzResourceGroup | Hiermee wordt een resourcegroep gemaakt waarin alle resources worden opgeslagen. |
New-AzVirtualNetwork | Hiermee maakt u een virtueel netwerk. |
Add-AzVirtualNetworkSubnetConfig | Hiermee voegt u een subnetconfiguratie aan een virtueel netwerk toe. |
Get-AzVirtualNetwork | Hiermee haalt u een virtueel netwerk op in een resourcegroep. |
Set-AzVirtualNetwork | Hiermee stelt u de doelstatus voor een virtueel netwerk in. |
Get-AzVirtualNetworkSubnetConfig | Hiermee haalt u een subnet in een virtueel netwerk op. |
Set-AzVirtualNetworkSubnetConfig | Hiermee configureert u de doelstatus voor een subnetconfiguratie in een virtueel netwerk. |
New-AzRouteTable | Hiermee maakt u een routetabel. |
Get-AzRouteTable | Hiermee haalt u routetabellen op. |
Get-AzRouteTable | Hiermee stelt u de doelstatus voor een routetabel in. |
New-AzSqlInstance | Hiermee maakt u een beheerd exemplaar. |
Remove-AzResourceGroup | Hiermee verwijdert u een resourcegroep, met inbegrip van alle geneste resources. |
Volgende stappen
Zie Documentatie over Azure PowerShell voor meer informatie over Azure PowerShell.
Extra voorbeelden van PowerShell-scripts voor een met Azure SQL beheerd exemplaar kunt u vinden in PowerShell-scripts voor met Azure SQL beheerd exemplaar.