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
⚠️ windows_first
⚠️ windows_tools
⚠️ missing_linux_example
Summary:
The documentation exhibits a strong Windows bias. All deployment and management commands use PowerShell cmdlets, even for Linux VMs. Windows examples and file paths are presented first and in more detail. Linux-specific tools, shell commands, and file paths are either missing or only briefly mentioned. The Linux section reuses Windows-centric PowerShell deployment and tracking commands, and does not provide equivalent Bash/CLI examples or Linux-native workflows.
Recommendations:
  • Provide Azure CLI and Bash examples for deploying and managing the Custom Script Extension on Linux VMs, rather than only PowerShell.
  • Include Linux-native file paths and log locations alongside Windows paths, and explain their significance.
  • Show Linux shell commands (e.g., mkdir, touch, cat) in the 'commandToExecute' examples, rather than using Windows-style commands or referencing the /home/Administrator directory, which is not standard on Linux.
  • Present Linux and Windows instructions in parallel, giving equal prominence to both, rather than always listing Windows first.
  • Demonstrate how to track and remove extensions using Linux-native tools or Azure CLI, not just PowerShell.
  • Clarify any differences in publisher/type/typeHandlerVersion for Linux vs. Windows extensions, and provide context for Linux users.
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-09 13:09 #3 cancelled ✅ Clean
2025-07-08 04:23 #2 cancelled ❌ Biased

Flagged Code Snippets

$templateFile = "<Path to addCSExtensiontoVM.json file>" $templateParameterFile = "<Path to addCSExtWindowsVM.parameters.json file>" $RGName = "<Resource group name>" New-AzureRmResourceGroupDeployment -ResourceGroupName $RGName -TemplateFile $templateFile -TemplateParameterFile $templateParameterFile -Name "<Deployment name>"
Get-AzureRmVMExtension -ResourceGroupName <Name of resource group> -VMName <Name of VM> -Name <Name of the extension>
C:\WindowsAzure\Logs\Plugins\Microsoft.Compute.CustomScriptExtension
C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.*\Downloads\<n>
$templateFile = "<Path to addCSExtensionToVM.json file>" $templateParameterFile = "<Path to addCSExtLinuxVM.parameters.json file>" $RGName = "<Resource group name>" New-AzureRmResourceGroupDeployment -ResourceGroupName $RGName -TemplateFile $templateFile -TemplateParameterFile $templateParameterFile -Name "<Deployment name>"
Get-AzureRmVMExtension -ResourceGroupName myResourceGroup -VMName <VM Name> -Name <Extension Name>
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#", "contentVersion": "1.0.0.0", "parameters": { "vmName": { "value": "VM5" }, "extensionName": { "value": "CustomScriptExtension" }, "publisher": { "value": "Microsoft.Compute" }, "type": { "value": "CustomScriptExtension" }, "typeHandlerVersion": { "value": "1.10" }, "settings": { "value": { "commandToExecute" : "md C:\\Users\\Public\\Documents\\test" } } } }
PS C:\WINDOWS\system32> $templateFile = "C:\12-09-2020\ExtensionTemplates\addCSExtensiontoVM.json" PS C:\WINDOWS\system32> $templateParameterFile = "C:\12-09-2020\ExtensionTemplates\addCSExtWindowsVM.parameters.json" PS C:\WINDOWS\system32> $RGName = "myasegpuvm1" PS C:\WINDOWS\system32> New-AzureRmResourceGroupDeployment -ResourceGroupName $RGName -TemplateFile $templateFile -TemplateParameterFile $templateParameterFile -Name "deployment7" DeploymentName : deployment7 ResourceGroupName : myasegpuvm1 ProvisioningState : Succeeded Timestamp : 12/17/2020 10:07:44 PM Mode : Incremental TemplateLink : Parameters : Name Type Value =============== ========================= ========== vmName String VM5 extensionName String CustomScriptExtension publisher String Microsoft.Compute type String CustomScriptExtension typeHandlerVersion String 1.10 settings Object { "commandToExecute": "md C:\\Users\\Public\\Documents\\test" } Outputs : DeploymentDebugLogLevel : PS C:\WINDOWS\system32>
PS C:\WINDOWS\system32> Get-AzureRmVMExtension -ResourceGroupName myasegpuvm1 -VMName VM5 -Name CustomScriptExtension ResourceGroupName : myasegpuvm1 VMName : VM5 Name : CustomScriptExtension Location : dbelocal Etag : null Publisher : Microsoft.Compute ExtensionType : CustomScriptExtension TypeHandlerVersion : 1.10 Id : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myasegpuvm1/providers/Microsoft.Compute/virtualMachines/VM5/extensions/CustomScriptExtension PublicSettings : { "commandToExecute": "md C:\\Users\\Public\\Documents\\test" } ProtectedSettings : ProvisioningState : Creating Statuses : SubStatuses : AutoUpgradeMinorVersion : True ForceUpdateTag : PS C:\WINDOWS\system32>
PS C:\WINDOWS\system32> $templateFile = "C:\12-09-2020\ExtensionTemplates\addCSExtensionToVM.json" PS C:\WINDOWS\system32> $templateParameterFile = "C:\12-09-2020\ExtensionTemplates\addCSExtLinuxVM.parameters.json" PS C:\WINDOWS\system32> $RGName = "myasegpuvm1" PS C:\WINDOWS\system32> New-AzureRmResourceGroupDeployment -ResourceGroupName $RGName -TemplateFile $templateFile -TemplateParameterFile $templateParameterFile -Name "deployment99" DeploymentName : deployment99 ResourceGroupName : myasegpuvm1 ProvisioningState : Succeeded Timestamp : 12/18/2020 1:55:23 AM Mode : Incremental TemplateLink : Parameters : Name Type Value =============== ========================= ========== vmName String VM6 extensionName String LinuxCustomScriptExtension publisher String Microsoft.Azure.Extensions type String CustomScript typeHandlerVersion String 2.0 settings Object { "commandToExecute": "sudo echo 'some text' >> /home/Administrator/file2.txt" } Outputs : DeploymentDebugLogLevel : PS C:\WINDOWS\system32>
PS C:\WINDOWS\system32> Get-AzureRmVMExtension -ResourceGroupName myasegpuvm1 -VMName VM5 -Name CustomScriptExtension ResourceGroupName : myasegpuvm1 VMName : VM5 Name : CustomScriptExtension Location : dbelocal Etag : null Publisher : Microsoft.Compute ExtensionType : CustomScriptExtension TypeHandlerVersion : 1.10 Id : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myasegpuvm1/providers/Microsoft.Compute/virtualMachines/VM5/extensions/CustomScriptExtension PublicSettings : { "commandToExecute": "md C:\\Users\\Public\\Documents\\test" } ProtectedSettings : ProvisioningState : Creating Statuses : SubStatuses : AutoUpgradeMinorVersion : True ForceUpdateTag : PS C:\WINDOWS\system32>
PS C:\WINDOWS\system32> Remove-AzureRmVMExtension -ResourceGroupName myasegpuvm1 -VMName VM6 -Name LinuxCustomScriptExtension Virtual machine extension removal operation This cmdlet will remove the specified virtual machine extension. Do you want to continue? [Y] Yes [N] No [S] Suspend [?] Help (default is "Y"): Yes RequestId IsSuccessStatusCode StatusCode ReasonPhrase --------- ------------------- ---------- ------------ True OK OK