About This Page
This page is part of the Azure documentation. It contains code examples and configuration instructions for working with Azure services.
Bias Analysis
Bias Types:
⚠️
powershell_heavy
⚠️
windows_first
⚠️
missing_linux_example
⚠️
windows_tools
Summary:
The documentation page demonstrates a strong Windows bias by providing only PowerShell-based deployment scripts, referencing Windows-centric tools (such as Visual Studio 2019), and omitting equivalent Linux shell or bash examples. The instructions assume the use of PowerShell and Windows tooling throughout, with no guidance for users on Linux or macOS platforms.
Recommendations:
- Provide equivalent Bash or shell script examples for all PowerShell scripts, ensuring Linux and macOS users can follow along without needing PowerShell.
- List cross-platform tools (such as VS Code) before or alongside Windows-only tools like Visual Studio 2019, and clarify which steps are platform-specific.
- Explicitly mention and link to Linux/macOS installation instructions for prerequisites (e.g., Azure CLI, Docker, Azure Data Studio).
- Where PowerShell modules are used, offer Azure CLI or REST API alternatives that are platform-agnostic.
- Add a section or callout for Linux/macOS users, summarizing any differences or additional steps required.
Create pull request
Flagged Code Snippets
$file = Read-Host "Please Enter the location to the zipped Database DacPac file:"
Set-AzStorageBlobContent -File $file -Container "sqldatabasedacpac" -Blob "SQLDatabasedacpac.zip" -Context $sa.Context
$DacpacFileSASURL = New-AzStorageBlobSASToken -Container "sqldatabasedacpac" -Blob "SQLDatabasedacpac.zip" -Context $sa.Context -Permission r -StartTime (Get-Date).DateTime -ExpiryTime (Get-Date).AddMonths(12) -FullUri
$AzVM = Get-AzVM -ResourceGroupName $ResourceGroup -Name $EdgeDeviceId
If($AzVM -eq $null)
{
Write-Output("The Azure VM with Name- $EdgeVMName is not present in the Resource Group- $ResourceGroup ")
$SingleSubnet = New-AzVirtualNetworkSubnetConfig -Name $SubnetName -AddressPrefix $SubnetAddressPrefix
$Vnet = New-AzVirtualNetwork -Name $NetworkName -ResourceGroupName $ResourceGroup -Location $location -AddressPrefix $VnetAddressPrefix -Subnet $SingleSubnet
$publicIp = New-AzPublicIpAddress -Name $publicIpName -ResourceGroupName $ResourceGroup -AllocationMethod Static -Location $location
$NIC = New-AzNetworkInterface -Name $NICName -ResourceGroupName $ResourceGroup -Location $location -SubnetId $Vnet.Subnets[0].Id -NetworkSecurityGroupId $nsg.Id -PublicIpAddressId $publicIp.Id
##Set-AzNetworkInterfaceIpConfig -Name "ipconfig1" -NetworkInterface $NIC -PublicIpAddress $publicIp
$Credential = New-Object System.Management.Automation.PSCredential ($AdminAcc, $AdminPassword);
$VirtualMachine = New-AzVMConfig -VMName $EdgeDeviceId -VMSize $VMSize
$VirtualMachine = Set-AzVMOperatingSystem -VM $VirtualMachine -Linux -ComputerName $EdgeDeviceId -Credential $Credential
$VirtualMachine = Add-AzVMNetworkInterface -VM $VirtualMachine -Id $NIC.Id
$VirtualMachine = Set-AzVMSourceImage -VM $VirtualMachine -PublisherName $imagePublisher -Offer $imageOffer -Skus $imageSku -Version latest
$VirtualMachine = Set-AzVMPlan -VM $VirtualMachine -Name $imageSku -Publisher $imagePublisher -Product $imageOffer
$AzVM = New-AzVM -ResourceGroupName $ResourceGroup -Location $location -VM $VirtualMachine -Verbose
$AzVM = Get-AzVM -ResourceGroupName $ResourceGroup -Name $EdgeDeviceId
}
else
{
Write-Output ("The Azure VM with Name- $EdgeDeviceId is present in the Resource Group- $ResourceGroup ")
}
$deviceIdentity = Get-AzIotHubDevice -ResourceGroupName $ResourceGroup -IotHubName $IoTHubName -DeviceId $EdgeDeviceId
If($deviceIdentity -eq $null)
{
Write-Output("The Edge Device with DeviceId- $EdgeDeviceId is not registered to the IoTHub- $IoTHubName ")
Add-AzIotHubDevice -ResourceGroupName $ResourceGroup -IotHubName $IoTHubName -DeviceId $EdgeDeviceId -EdgeEnabled
}
else
{
Write-Output ("The Edge Device with DeviceId- $EdgeDeviceId is registered to the IoTHub- $IoTHubName")
}
$deviceIdentity = Get-AzIotHubDevice -ResourceGroupName $ResourceGroup -IotHubName $IoTHubName -DeviceId $EdgeDeviceId
$deviceConnectionString = az iot hub device-identity connection-string show --device-id $EdgeDeviceId --hub-name $IoTHubName --resource-group $ResourceGroup --subscription $SubscriptionName
$connString = $deviceConnectionString[1].Substring(23,$deviceConnectionString[1].Length-24)
$connString
Import-Module Az.Accounts -RequiredVersion 1.7.3
Import-Module -Name Az -RequiredVersion 3.5.0
Import-Module Az.IotHub -RequiredVersion 2.1.0
Import-Module Az.Compute -RequiredVersion 3.5.0
az extension add --name azure-iot
az extension add --name azure-cli-ml
$ResourceGroup = "<name_of_the_resource_group>"
$IoTHubName = "<name_of_the_IoT_hub>"
$location = "<location_of_your_Azure_Subscription>"
$SubscriptionName = "<your_azure_subscription>"
$NetworkSecGroup = "<name_of_your_network_security_group>"
$StorageAccountName = "<name_of_your_storage_account>"
$IoTHubSkuName = "S1"
$IoTHubUnits = 4
$EdgeDeviceId = "IronOrePredictionDevice"
$publicIpName = "VMPublicIP"
$imageOffer = "iot_edge_vm_ubuntu"
$imagePublisher = "microsoft_iot_edge"
$imageSku = "ubuntu_1604_edgeruntimeonly"
$AdminAcc = "iotadmin"
$AdminPassword = ConvertTo-SecureString "<password>" -AsPlainText -Force
$VMSize = "Standard_DS3"
$NetworkName = "MyNet"
$NICName = "MyNIC"
$SubnetName = "MySubnet"
$SubnetAddressPrefix = "10.0.0.0/24"
$VnetAddressPrefix = "10.0.0.0/16"
$MyWorkSpace = "SQLDatabaseEdgeDemo"
$containerRegistryName = $ResourceGroup + "ContRegistry"
Select-AzSubscription -Subscription $SubscriptionName
az account set --subscription $SubscriptionName
$rg = Get-AzResourceGroup -Name $ResourceGroup
if($rg -eq $null)
{
Write-Output("Resource Group $ResourceGroup does not exist, creating Resource Group")
New-AzResourceGroup -Name $ResourceGroup -Location $location
}
else
{
Write-Output ("Resource Group $ResourceGroup exists")
}
$sa = Get-AzStorageAccount -ResourceGroupName $ResourceGroup -Name $StorageAccountName
if ($sa -eq $null)
{
New-AzStorageAccount -ResourceGroupName $ResourceGroup -Name $StorageAccountName -SkuName Standard_LRS -Location $location -Kind Storage
$sa = Get-AzStorageAccount -ResourceGroupName $ResourceGroup -Name $StorageAccountName
$storageKey = Get-AzStorageAccountKey -ResourceGroupName $ResourceGroup -Name $StorageAccountName
$storageContext = New-AzStorageContext -StorageAccountName $StorageAccountName -StorageAccountKey $storageKey[0].Value
New-AzStorageContainer -Name "sqldatabasedacpac" -Context $storageContext
}
else
{
Write-Output ("Storage Account $StorageAccountName exists in Resource Group $ResourceGroup")
}
$containerRegistry = Get-AzContainerRegistry -ResourceGroupName $ResourceGroup -Name $containerRegistryName
if ($containerRegistry -eq $null)
{
New-AzContainerRegistry -ResourceGroupName $ResourceGroup -Name $containerRegistryName -Sku Standard -Location $location -EnableAdminUser
$containerRegistry = Get-AzContainerRegistry -ResourceGroupName $ResourceGroup -Name $containerRegistryName
}
else
{
Write-Output ("Container Registry $containerRegistryName exists in Resource Group $ResourceGroup")
}
$nsg = Get-AzNetworkSecurityGroup -ResourceGroupName $ResourceGroup -Name $NetworkSecGroup
if($nsg -eq $null)
{
Write-Output("Network Security Group $NetworkSecGroup does not exist in the resource group $ResourceGroup")
$rule1 = New-AzNetworkSecurityRuleConfig -Name "SSH" -Description "Allow SSH" -Access Allow -Protocol Tcp -Direction Inbound -Priority 100 -SourceAddressPrefix Internet -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange 22
$rule2 = New-AzNetworkSecurityRuleConfig -Name "SQL" -Description "Allow SQL" -Access Allow -Protocol Tcp -Direction Inbound -Priority 101 -SourceAddressPrefix Internet -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange 1600
New-AzNetworkSecurityGroup -Name $NetworkSecGroup -ResourceGroupName $ResourceGroup -Location $location -SecurityRules $rule1, $rule2
$nsg = Get-AzNetworkSecurityGroup -ResourceGroupName $ResourceGroup -Name $NetworkSecGroup
}
else
{
Write-Output ("Network Security Group $NetworkSecGroup exists in the resource group $ResourceGroup")
}
$iotHub = Get-AzIotHub -ResourceGroupName $ResourceGroup -Name $IoTHubName
If($iotHub -eq $null)
{
Write-Output("IoTHub $IoTHubName does not exists, creating The IoTHub in the resource group $ResourceGroup")
New-AzIotHub -ResourceGroupName $ResourceGroup -Name $IoTHubName -SkuName $IoTHubSkuName -Units $IoTHubUnits -Location $location -Verbose
}
else
{
Write-Output ("IoTHub $IoTHubName present in the resource group $ResourceGroup")
}