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:
⚠️ windows_first
⚠️ powershell_heavy
⚠️ windows_tools
⚠️ missing_linux_example
Summary:
The documentation demonstrates a Windows bias in several ways: Windows and PowerShell tools are consistently presented alongside or before Linux alternatives, and some features or instructions are only available or described for Windows environments. PowerShell examples are provided throughout, but Linux-specific shell or scripting examples are absent. Several advanced tools (like Kudu, App Service Editor, and in-portal console) are available only or primarily on Windows. Plan migration instructions are explicitly limited to Windows, with Linux migration described as unsupported or restricted. In some feature matrices, Linux support is marked as unavailable or not discussed, and Linux-specific workflows are not given equal coverage.
Recommendations:
  • Provide explicit Linux/bash shell examples alongside PowerShell for all CLI operations, especially for scripting and automation.
  • Clarify Linux support and limitations in all feature tables and sections, and offer workarounds or alternatives where features are Windows-only.
  • Where plan migration is not supported on Linux, explain the reasons and suggest alternative approaches or migration paths for Linux users.
  • Include Linux-specific instructions for using advanced tools (such as SSH-based console access) and clarify differences in tool availability.
  • Ensure that all screenshots and UI walkthroughs mention or show Linux options where relevant.
  • Add parity in documentation for local development and deployment workflows on Linux, including references to Linux-compatible tools and editors.
  • Where PowerShell is featured, provide equivalent bash or shell script snippets for Linux users.
GitHub Create pull request

Scan History

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

Flagged Code Snippets

In this example, replace `<APP_NAME>` with your function app name and `<GROUP_NAME>` with the resource group. The returned `URL`, `username`, and `password` columns contain the target URL and credentials for FTPS publishing. ### [Azure PowerShell](#tab/azure-powershell) Run this Azure PowerShell command that returns the FTPS credentials from the publishing profile.
1. Run the [Update-AzFunctionApp](/powershell/module/az.functions/update-azfunctionapp) command as follows to migrate the existing function app to the new Premium plan:
1. Run the [Get-AzFunctionApp](/powershell/module/az.functions/get-azfunctionapp) command as follows to get the name of the Consumption plan created with the new function app:
### [Azure PowerShell](#tab/azure-powershell) The [`Get-AzFunctionAppSetting`](/powershell/module/az.functions/get-azfunctionappsetting) cmdlet returns the existing application settings, for example:
The [`Update-AzFunctionAppSetting`](/powershell/module/az.functions/update-azfunctionappsetting) command adds or updates an application setting. The following example creates a setting with a key named `CUSTOM_FUNCTION_APP_SETTING` and a value of `12345`:
In the previous example, replace `<RESOURCE_GROUP>` and `<FUNCTION_APP_NAME>` with the resource group and function app names, respectively. --- ## Plan migration You can migrate a function app between a Consumption plan and a Premium plan on Windows. >[!TIP] >We recommend you migrate your Consumption plan app to run in a Flex Consumption plan instead of a Premium plan. This is the only migration option for a Linux Consumption plan app. For more information, see [Migrate Consumption plan apps to the Flex Consumption plan](migration/migrate-plan-consumption-to-flex.md). When migrating between plans, keep in mind the following considerations: + Direct migration to a Dedicated (App Service) plan isn't supported. + Migration isn't supported on Linux. + The source plan and the target plan must be in the same resource group and geographical region. For more information, see [Move an app to another App Service plan](../app-service/app-service-plan-manage.md#move-an-app-to-another-app-service-plan). + The specific CLI commands depend on the direction of the migration. + Downtime in your function executions occurs as the function app is migrated between plans. + State and other app-specific content is maintained, because the same Azure Files share is used by the app both before and after migration. You can migrate your plan using these tools: ### [Azure portal](#tab/azure-portal) You can use the [Azure portal](https://portal.azure.com) to switch to a different plan. ### [Azure CLI](#tab/azure-cli) You can use the Azure CLI commands to manually create a new plan, switch your app to use the new plan, and delete the original plan. ### [Azure PowerShell](#tab/azure-powershell) You can use Azure PowerShell commands to manually create a new plan, switch your app to use the new plan, and delete the original plan. --- Choose the direction of the migration for your app on Windows. ### [Consumption-to-Premium](#tab/to-premium/azure-portal) 1. In the Azure portal, navigate to your Consumption plan app, and in the left pane expand **App Service plan** and select **App Service plan**. 1. In the **App Service plan** page, select **Change plan** under **Current App Service plan**. 1. In **Change App Service plan**, select **Premium** for **Plan type**, create a new Premium plan, and select **OK**. For more information, see [Move an app to another App Service plan](../app-service/app-service-plan-manage.md#move-an-app-to-another-app-service-plan). ### [Premium-to-Consumption](#tab/to-consumption/azure-portal) 1. In the Azure portal, navigate to your Elastic Premium plan app, and in the left pane expand **App Service plan** and select **App Service plan**. 1. In the **App Service plan** page, select **Change plan** under **Current App Service plan**. 1. In **Change App Service plan**, select **Consumption** under **Plan type**, create a new Consumption plan, and select **OK**. For more information, see [Move an app to another App Service plan](../app-service/app-service-plan-manage.md#move-an-app-to-another-app-service-plan). ### [Consumption-to-Premium](#tab/to-premium/azure-cli) Use the following procedure to migrate from a Consumption plan to a Premium plan on Windows: 1. Run the [az functionapp create](/cli/azure/functionapp/plan#az-functionapp-plan-create) command as follows to create a new App Service plan (Elastic Premium) in the same region and resource group as your existing function app:
### [Premium-to-Consumption](#tab/to-consumption/azure-cli) Use the following procedure to migrate from a Premium plan to a Consumption plan on Windows: 1. Run the [az functionapp create](/cli/azure/functionapp#az-functionapp-create) command as follows to create a new function app (Consumption) in the same region and resource group as your existing function app. This command also creates a new Consumption plan in which the function app runs:
### [Consumption-to-Premium](#tab/to-premium/azure-powershell) Use the following procedure to migrate from a Consumption plan to a Premium plan on Windows: 1. Run the [New-AzFunctionAppPlan](/powershell/module/az.functions/new-azfunctionappplan) command as follows to create a new App Service plan (Elastic Premium) in the same region and resource group as your existing function app:
1. When you no longer need the Consumption plan originally used by the app, you can run the [Remove-AzFunctionAppPlan](/powershell/module/az.functions/remove-azfunctionappplan) command as follows to delete the Consumption plan you migrated from:
### [Premium-to-Consumption](#tab/to-consumption/azure-powershell) Use the following procedure to migrate from a Premium plan to a Consumption plan on Windows: 1. Run the [New-AzFunctionApp](/powershell/module/az.functions/new-azfunctionapp) command as follows to create a new function app (Consumption) in the same region and resource group as your existing function app. This command also creates a new Consumption plan in which the function app runs:
1. Run the [Update-AzFunctionApp](/powershell/module/az.functions/update-azfunctionapp) command as follows to migrate the existing function app to the new Consumption plan:
1. When you no longer need the Consumption plan originally used by the app, you can run the [Remove-AzFunctionAppPlan](/powershell/module/az.functions/remove-azfunctionappplan) command as follows to delete the Consumption plan you migrated from:
--- ## Development limitations in the Azure portal The following table shows the operating systems and languages that support in-portal editing: | Language | Windows Consumption | Windows Premium | Windows Dedicated | Linux Consumption | Linux Premium | Linux Dedicated | |-|:-----------------: |:----------------:|:-----------------:|:-----------------:|:-------------:|:---------------:| | C# | | | | | | | Java | | | | | | | | JavaScript (Node.js) |✔|✔|✔| |✔|✔| | Python | | | |✔ |✔ |✔ | | PowerShell |✔|✔|✔| | | | | TypeScript (Node.js) | | | | | | | Consider these limitations when you develop your functions in the [Azure portal](https://portal.azure.com): + In-portal editing is supported only for functions that were created or last modified in the Azure portal. + In-portal editing is supported only for JavaScript, PowerShell, Python, and C# Script functions. + In-portal editing isn't currently supported by the [Flex Consumption plan](flex-consumption-plan.md#considerations). + When you deploy code to a function app from outside the Azure portal, you can no longer edit any of the code for that function app in the portal. In this case, just continue using [local development](functions-develop-local.md). + For Python, development with custom modules isn't currently supported in the portal. To add custom modules to your function app, you must [develop your app locally](functions-develop-local.md). + For compiled C# functions and Java functions, you can create the function app and related resources in the portal. However, you must create the functions code project locally and then publish it to Azure. When possible, develop your functions locally and publish your code project to a function app in Azure. For more information, see [Code and test Azure Functions locally](functions-develop-local.md). ## Manually install extensions C# class library functions can include the NuGet packages for [binding extensions](functions-bindings-register.md) directly in the class library project. For other non-.NET languages and C# script, you should [use extension bundles](extension-bundles.md). If you must manually install extensions, you can do so by [using Azure Functions Core Tools](./functions-core-tools-reference.md#func-extensions-install) locally. If you can't use extension bundles and are only able to work in the portal, you need to use [Advanced Tools (Kudu)](#kudu) to manually create the extensions.csproj file directly in the site. Make sure to first remove the `extensionBundle` element from the *host.json* file. This same process works for any other file you need to add to your app. > [!IMPORTANT] > When possible, don't edit files directly in your function app in Azure. We recommend [downloading your app files locally](deployment-zip-push.md#download-your-function-app-files), using [Core Tools to install extensions](./functions-core-tools-reference.md#func-extensions-install) and other packages, validating your changes, and then [republishing your app using Core Tools](functions-run-local.md#publish) or one of the other [supported deployment methods](functions-deployment-technologies.md#deployment-methods). The Functions editor built into the Azure portal lets you update your function code and configuration files directly in the portal: 1. Select your function app, then under **Functions**, select **Functions**. 1. Choose your function and select **Code + test** under **Developer**. 1. Choose your file to edit and select **Save** when you finish. Files in the root of the app, such as function.proj or extensions.csproj need to be created and edited by using the [Advanced Tools (Kudu)](#kudu): 1. Select your function app, expand **Development tools**, and then select **Advanced tools** > **Go**. 1. If prompted, sign in to the Source Control Manager (SCM) site with your Azure credentials. 1. From the **Debug console** menu, choose **CMD**. 1. Navigate to `.\site\wwwroot`, select the plus (**+**) button at the top, and select **New file**. 1. Give the file a name, such as `extensions.csproj`, and then press Enter. 1. Select the edit button next to the new file, add or update code in the file, and then select **Save**. 1. For a project file like *extensions.csproj*, run the following command to rebuild the extensions project: