Windows 10 Enterprise edition version 2004 is used for the scenarios demonstrated in this blog article. If you’d like to follow along, you’ll also need to install PowerShell version 7 and the Az PowerShell module.
As stated in the help for Connect-AzAccount, the UseDeviceAuthentication parameter is the default authentication type for PowerShell version 6 and higher.
1 | help Connect-AzAccount -Parameter UseDeviceAuthentication |
What this means is that you’re provided with a URL and a code. They’re used to authenticate with Azure when signing in interactively from PowerShell.
1 | Connect-AzAccount |
By default, Windows PowerShell prompts you to sign in with a GUI:
1 | Connect-AzAccount |
Replicating the default behavior from PowerShell 7 in Windows PowerShell is easy enough using the UseDeviceAuthentication parameter:
1 | Connect-AzAccount -UseDeviceAuthentication |
To set this type of behavior as the default in Windows PowerShell, add the UseDeviceAuthentication parameter to your $PSDefaultParameterValues preference variable:
1 | $PSDefaultParameterValues['Connect-AzAccount:UseDeviceAuthentication']=$true |
Once added, anytime that you sign in to Azure from Windows PowerShell, it will default to the same behavior as PowerShell 7:
1 | Connect-AzAccount |
Troubleshooting
The values stored in $PSDefaultParameterValues don’t persist between PowerShell sessions. Adding the items to your PowerShell profile is the key to making them persist.
Use $PSDefaultParameterValues with caution. It could lock you into a particular parameter set as is the case with the scenario outlined in this blog article.
Don’t enclose Boolean values in quotes that you add to $PSDefaultParameterValues. Using quotes causes the values to be added, but not work properly.
Additional Information
- The end of life for PowerShell version 6 is September 4, 2020. Update to PowerShell version 7.
- Migrate from the AzureRM to the Az PowerShell module. AzureRM will continue to receive bug fixes until at least December 2020.
µ