Sad Tux - Windows bias detected
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

Detected Bias Types
powershell_heavy
windows_tools
missing_linux_example
windows_first
Summary
The documentation is heavily focused on PowerShell-based migration, with all instructions, code snippets, and tooling references centered around PowerShell and the PowerShell Gallery. There are no examples or guidance for Linux or cross-platform users (e.g., Bash, Azure CLI), and the use of Windows-centric tools and patterns (such as .ps1 scripts, PowerShell modules, and Windows file paths) is pervasive. This creates a significant Windows bias and may hinder users on Linux or macOS from following the migration process.
Recommendations
  • Provide equivalent Azure CLI (az) commands and scripts for all major steps, including authentication, resource discovery, and migration.
  • Offer Bash shell script examples or instructions for Linux/macOS users, especially for certificate handling and script execution.
  • Clearly state platform compatibility of the migration script and, if it is PowerShell Core compatible, provide explicit instructions for installing and running it on Linux/macOS.
  • Include download and execution instructions for the migration script that do not assume Windows or PowerShell Gallery (e.g., using wget/curl and pwsh).
  • Mention cross-platform Azure Cloud Shell as a primary option, and provide parity in examples for both PowerShell and Bash environments.
  • Add a section or callouts for Linux/macOS users, highlighting any prerequisites, differences, or limitations.
GitHub Create Pull Request

Scan History

Date Scan Status Result
2026-02-19 00:00 #398 in_progress Biased Biased
2026-02-18 00:00 #394 in_progress Biased Biased
2026-02-17 00:00 #390 in_progress Biased Biased
2026-02-16 00:00 #386 in_progress Biased Biased
2026-02-15 00:00 #382 in_progress Biased Biased
2026-02-14 00:00 #378 in_progress Biased Biased
2026-02-13 00:00 #374 in_progress Biased Biased
2026-02-12 00:00 #370 in_progress Biased Biased
2026-02-11 00:00 #366 in_progress Clean Clean
2026-02-10 00:00 #362 completed Biased Biased
2026-02-09 00:00 #358 completed Biased Biased
2026-02-08 00:00 #354 completed Biased Biased
2026-02-05 00:00 #342 completed Biased Biased
2026-02-04 00:00 #338 completed Biased Biased
2026-02-03 00:00 #334 completed Biased Biased
2026-02-02 00:00 #330 completed Biased Biased
2026-02-01 00:00 #326 completed Biased Biased
2026-01-31 00:00 #322 completed Biased Biased
2026-01-30 00:00 #318 completed Biased Biased
2026-01-27 00:00 #306 completed Biased Biased
2026-01-26 00:00 #302 completed Biased Biased
2026-01-24 00:00 #294 completed Biased Biased
2026-01-23 00:00 #290 failed Biased Biased
2026-01-14 00:00 #250 in_progress Biased Biased
2026-01-13 00:00 #246 completed Biased Biased
2026-01-12 00:00 #243 cancelled Biased Biased
2026-01-11 00:00 #240 completed Biased Biased
2026-01-10 00:00 #237 completed Biased Biased
2026-01-09 00:34 #234 completed Biased Biased
2026-01-08 00:53 #231 completed Clean Clean
2026-01-06 18:15 #225 cancelled Clean Clean
2025-09-16 00:00 #113 completed Clean Clean
2025-09-15 00:00 #112 completed Clean Clean
2025-09-14 00:00 #111 completed Clean Clean
2025-09-13 00:00 #110 completed Clean Clean
2025-09-12 00:00 #109 completed Clean Clean
2025-08-17 00:01 #83 cancelled Clean Clean
2025-07-13 21:37 #48 completed Biased Biased
2025-07-09 13:09 #3 cancelled Clean Clean
2025-07-08 04:23 #2 cancelled Biased Biased

Flagged Code Snippets

<#PSScriptInfo
.VERSION 1.0.10
.GUID be3b84b4-e9c5-46fb-a050-699c68e16119
.AUTHOR Microsoft Corporation
.COMPANYNAME Microsoft Corporation
.COPYRIGHT Microsoft Corporation. All rights reserved.
     $appgw = Get-AzApplicationGateway -Name <V1 gateway name> -ResourceGroupName <resource group Name>
     $appgw.Id
     
   Set-AzContext -Subscription '<V1 application gateway SubscriptionId>'
   
   AzureAppGWMigration.ps1
    -resourceId <V1 application gateway Resource ID>
    -subnetAddressRange <subnet space you want to use>
    -appgwName <string to use to append>
    -AppGWResourceGroupName <resource group name you want to use>
    -sslCertificates <comma-separated SSLCert objects as above>
    -trustedRootCertificates <comma-separated Trusted Root Cert objects as above>
    -privateIpAddress <private IP string>
    -publicIpResourceId <public IP name string>
    -validateMigration -enableAutoScale
   
      $password = ConvertTo-SecureString <cert-password> -AsPlainText -Force
      $mySslCert1 = New-AzApplicationGatewaySslCertificate -Name "Cert01" `
        -CertificateFile <Cert-File-Path-1> `
        -Password $password
      $mySslCert2 = New-AzApplicationGatewaySslCertificate -Name "Cert02" `
        -CertificateFile <Cert-File-Path-2> `
        -Password $password
      
      $vaultName = ConvertTo-SecureString <kv-name> -AsPlainText -Force
      $certificateName = ConvertTo-SecureString <cert-name> -AsPlainText -Force
      $password = ConvertTo-SecureString <password> -AsPlainText -Force
      
      $pfxSecret = Get-AzKeyVaultSecret -VaultName $vaultName -Name $certificateName -AsPlainText
      $secretByte = [Convert]::FromBase64String($pfxSecret)
      $x509Cert = New-Object Security.Cryptography.X509Certificates.X509Certificate2
      $x509Cert.Import($secretByte, $null, [Security.Cryptography.X509Certificates.X509KeyStorageFlags]::Exportable)
      $pfxFileByte = $x509Cert.Export([Security.Cryptography.X509Certificates.X509ContentType]::Pkcs12, $password)
      
      # Write to a file
      [IO.File]::WriteAllBytes("KeyVaultcertificate.pfx", $pfxFileByte)
      
      //Convert the downloaded certificate to SSL object
      $password = ConvertTo-SecureString  <password> -AsPlainText -Force 
      $cert = New-AzApplicationGatewaySSLCertificate -Name <certname> -CertificateFile <Cert-File-Path-1> -Password $password 
       
      $certFilePath = ".\rootCA.cer"
      $trustedCert = New-AzApplicationGatewayTrustedRootCertificate -Name "trustedCert1" -CertificateFile $certFilePath
      
   AzureAppGWMigration.ps1 `
      -resourceId /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MyResourceGroup/providers/Microsoft.Network/applicationGateways/myv1appgateway `
      -subnetAddressRange 10.0.0.0/24 `
      -appgwname "MynewV2gw" `
      -AppGWResourceGroupName "MyResourceGroup" `
      -sslCertificates $mySslCert1,$mySslCert2 `
      -trustedRootCertificates $trustedCert `
      -privateIpAddress "10.0.0.1" `
      -publicIpResourceId "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MyResourceGroup/providers/Microsoft.Network/publicIPAddresses/MyPublicIP" `
      -validateMigration -enableAutoScale