❌
This page contains Windows bias

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
⚠️ missing_linux_example
⚠️ windows_tools
⚠️ windows_first
Summary:
The documentation is heavily biased towards Windows and PowerShell. All examples use Azure PowerShell cmdlets, with no mention of Azure CLI, Bash, or Linux-based workflows. The VM creation steps specifically use Windows Server images, and the only remote access method shown is RDP (port 3389), which is Windows-specific. There are no Linux VM examples, nor are there instructions for SSH or Linux image deployment. The documentation assumes the user is working in a Windows/PowerShell environment throughout.
Recommendations:
  • Provide parallel examples using Azure CLI (az commands) and Bash scripts for all resource creation steps.
  • Include Linux VM deployment examples (e.g., using Ubuntu or CentOS images) alongside or instead of Windows Server.
  • Show how to configure SSH access (port 22) in the network security group rules, not just RDP.
  • Explicitly mention that the steps can be performed from Linux/macOS using Azure CLI or Cloud Shell, and provide relevant instructions.
  • Reorganize the documentation to present cross-platform options equally, rather than focusing exclusively on PowerShell/Windows.
  • Add a section or callout for Linux users, highlighting any differences or considerations.
GitHub Create pull request

Scan History

Date Scan ID Status Bias Status
2025-08-17 00:01 #83 in_progress ✅ Clean
2025-07-13 21:37 #48 completed ✅ Clean
2025-07-12 23:44 #41 in_progress ❌ Biased
2025-07-09 13:09 #3 cancelled ✅ Clean
2025-07-08 04:23 #2 cancelled ✅ Clean

Flagged Code Snippets

$lb = New-AzLoadBalancer ` -ResourceGroupName $rg.ResourceGroupName ` -Location $rg.Location ` -Name "MyInternalLoadBalancer" ` -Sku "Standard" ` -FrontendIpConfiguration $frontendIPv4,$frontendIPv6 ` -BackendAddressPool $backendPoolv4,$backendPoolv6 ` -LoadBalancingRule $lbrule_v4,$lbrule_v6
$frontendIPv6 = New-AzLoadBalancerFrontendIpConfig ` -Name "dsLbFrontEnd_v6" ` -PrivateIpAddress "fd00:db8:deca:deed::100" ` -PrivateIpAddressVersion "IPv6" ` -Subnet $DsSubnet
$rg = New-AzResourceGroup ` -ResourceGroupName "dsStd_ILB_RG" ` -Location "east us"
$RdpPublicIP_1 = New-AzPublicIpAddress ` -Name "RdpPublicIP_1" ` -ResourceGroupName $rg.ResourceGroupName ` -Location $rg.Location ` -AllocationMethod Static ` -IpAddressVersion IPv4 ` -sku Standard $RdpPublicIP_2 = New-AzPublicIpAddress ` -Name "RdpPublicIP_2" ` -ResourceGroupName $rg.ResourceGroupName ` -Location $rg.Location ` -AllocationMethod Static ` -IpAddressVersion IPv6 ` -sku Standard
# Create dual stack subnet config $DsSubnet = New-AzVirtualNetworkSubnetConfig ` -Name "dsSubnet" ` -AddressPrefix "10.0.0.0/24","fd00:db8:deca:deed::/64" # Create the virtual network $vnet = New-AzVirtualNetwork ` -ResourceGroupName $rg.ResourceGroupName ` -Location $rg.Location ` -Name "dsVnet" ` -AddressPrefix "10.0.0.0/16","fd00:db8:deca::/48" ` -Subnet $DsSubnet #Refresh the fully populated subnet for use in load balancer frontend configuration $DsSubnet = get-AzVirtualNetworkSubnetconfig -name dsSubnet -VirtualNetwork $vnet
$cred = get-credential -Message "DUAL STACK VNET SAMPLE: Please enter the Administrator credential to log into the VM's"
Remove-AzResourceGroup -Name dsStd_ILB_RG
$frontendIPv4 = New-AzLoadBalancerFrontendIpConfig ` -Name "dsLbFrontEnd_v4" ` -PrivateIpAddress "10.0.0.100" ` -PrivateIpAddressVersion "IPv4" ` -Subnet $DsSubnet $frontendIPv6 = New-AzLoadBalancerFrontendIpConfig ` -Name "dsLbFrontEnd_v6" ` -PrivateIpAddress "fd00:db8:deca:deed::100" ` -PrivateIpAddressVersion "IPv6" ` -Subnet $DsSubnet
$backendPoolv4 = New-AzLoadBalancerBackendAddressPoolConfig -Name "dsLbBackEndPool_v4" $backendPoolv6 = New-AzLoadBalancerBackendAddressPoolConfig -Name "dsLbBackEndPool_v6"
$lbrule_v4 = New-AzLoadBalancerRuleConfig ` -Name "dsLBrule_v4" ` -FrontendIpConfiguration $frontendIPv4 ` -BackendAddressPool $backendPoolv4 ` -Protocol Tcp ` -FrontendPort 80 ` -BackendPort 80 $lbrule_v6 = New-AzLoadBalancerRuleConfig ` -Name "dsLBrule_v6" ` -FrontendIpConfiguration $frontendIPv6 ` -BackendAddressPool $backendPoolv6 ` -Protocol Tcp ` -FrontendPort 80 ` -BackendPort 80
$avset = New-AzAvailabilitySet ` -ResourceGroupName $rg.ResourceGroupName ` -Location $rg.Location ` -Name "dsAVset" ` -PlatformFaultDomainCount 2 ` -PlatformUpdateDomainCount 2 ` -Sku aligned
$rule1 = New-AzNetworkSecurityRuleConfig ` -Name 'myNetworkSecurityGroupRuleRDP' ` -Description 'Allow RDP' ` -Access Allow ` -Protocol Tcp ` -Direction Inbound ` -Priority 100 ` -SourceAddressPrefix * ` -SourcePortRange * ` -DestinationAddressPrefix * ` -DestinationPortRange 3389
$rule2 = New-AzNetworkSecurityRuleConfig ` -Name 'myNetworkSecurityGroupRuleHTTP' ` -Description 'Allow HTTP' ` -Access Allow ` -Protocol Tcp ` -Direction Inbound ` -Priority 200 ` -SourceAddressPrefix * ` -SourcePortRange 80 ` -DestinationAddressPrefix * ` -DestinationPortRange 80
$nsg = New-AzNetworkSecurityGroup ` -ResourceGroupName $rg.ResourceGroupName ` -Location $rg.Location ` -Name "dsNSG1" ` -SecurityRules $rule1,$rule2
# Create the IPv4 configuration for NIC 1 $Ip4Config=New-AzNetworkInterfaceIpConfig ` -Name dsIp4Config ` -Subnet $vnet.subnets[0] ` -PrivateIpAddressVersion IPv4 ` -LoadBalancerBackendAddressPool $backendPoolv4 ` -PublicIpAddress $RdpPublicIP_1 # Create the IPv6 configuration $Ip6Config=New-AzNetworkInterfaceIpConfig ` -Name dsIp6Config ` -Subnet $vnet.subnets[0] ` -PrivateIpAddressVersion IPv6 ` -LoadBalancerBackendAddressPool $backendPoolv6 # Create NIC 1 $NIC_1 = New-AzNetworkInterface ` -Name "dsNIC1" ` -ResourceGroupName $rg.ResourceGroupName ` -Location $rg.Location ` -NetworkSecurityGroupId $nsg.Id ` -IpConfiguration $Ip4Config,$Ip6Config # Create the IPv4 configuration for NIC 2 $Ip4Config=New-AzNetworkInterfaceIpConfig ` -Name dsIp4Config ` -Subnet $vnet.subnets[0] ` -PrivateIpAddressVersion IPv4 ` -LoadBalancerBackendAddressPool $backendPoolv4 ` -PublicIpAddress $RdpPublicIP_2 # Create NIC 2 reusing the IPv6 configuration from NIC 1 $NIC_2 = New-AzNetworkInterface ` -Name "dsNIC2" ` -ResourceGroupName $rg.ResourceGroupName ` -Location $rg.Location ` -NetworkSecurityGroupId $nsg.Id ` -IpConfiguration $Ip4Config,$Ip6Config
$vmsize = "Standard_A2" $ImagePublisher = "MicrosoftWindowsServer" $imageOffer = "WindowsServer" $imageSKU = "2019-Datacenter" $vmName= "dsVM1" $VMconfig1 = New-AzVMConfig -VMName $vmName -VMSize $vmsize -AvailabilitySetId $avset.Id 3> $null | Set-AzVMOperatingSystem -Windows -ComputerName $vmName -Credential $cred -ProvisionVMAgent 3> $null | Set-AzVMSourceImage -PublisherName $ImagePublisher -Offer $imageOffer -Skus $imageSKU -Version "latest" 3> $null | Set-AzVMOSDisk -Name "$vmName.vhd" -CreateOption fromImage 3> $null | Add-AzVMNetworkInterface -Id $NIC_1.Id 3> $null $VM1 = New-AzVM -ResourceGroupName $rg.ResourceGroupName -Location $rg.Location -VM $VMconfig1 $vmName= "dsVM2" $VMconfig2 = New-AzVMConfig -VMName $vmName -VMSize $vmsize -AvailabilitySetId $avset.Id 3> $null | Set-AzVMOperatingSystem -Windows -ComputerName $vmName -Credential $cred -ProvisionVMAgent 3> $null | Set-AzVMSourceImage -PublisherName $ImagePublisher -Offer $imageOffer -Skus $imageSKU -Version "latest" 3> $null | Set-AzVMOSDisk -Name "$vmName.vhd" -CreateOption fromImage 3> $null | Add-AzVMNetworkInterface -Id $NIC_2.Id 3> $null $VM2 = New-AzVM -ResourceGroupName $rg.ResourceGroupName -Location $rg.Location -VM $VMconfig2