Changes coming to PowerShell (preview) in Azure Cloud Shell
Azure Cloud Shell provides browser-based authenticated shell access to Azure from virtually anywhere. Cloud Shell gives the users a rich environment with common tools that is updated and maintained by Microsoft.
Bash in Cloud Shell that runs Bash shell on Ubuntu Linux, which was made generally available in November 2017
PowerShell in Cloud Shell that runs Windows PowerShell 5.1 on Windows Server Core and has been in preview since September 2017
In this post, we are listing the key upcoming changes to the PowerShell experience in Azure Cloud Shell, namely:
- Faster startup time
- PowerShell Core 6 as the default experience
- Running on a Linux container
- Persistent Tool Settings
Faster Startup Time
We are well-aware that the startup time of PowerShell in Azure Cloud Shell is well below the user’s expectation. For past couple of months, the team has been working hard to make significant improvements in this area. We expect to deliver multi-fold improvements in the startup time for PowerShell experience (and also make Bash experience faster).
Default to PowerShell Core 6
In January 2018, PowerShell Core 6 reached its general availability (GA). With the ecosystem of PowerShell Core 6 growing, it’s the perfect opportunity to make PowerShell Core 6 the default PowerShell experience in Cloud Shell. To support easy management of Azure resources, all of the Azure PowerShell modules are on path to be supported on PowerShell Core 6 currently in preview.
Consistent Tool Availability
To ensure the best command-line tools experience while using Azure Cloud Shell, the PowerShell experience will be switching to a Linux container running PowerShell Core 6. This change will enable a consistent toolset experience across the PowerShell and Bash experiences in Cloud Shell.
Persistent Tool Settings
In addition to saving your modules and scripts to Cloud Drive, persistent settings for available tools, such as Git and SSH, will be automatically saved to your Cloud Drive. This will remove the need for any additional set-up for these tools, as currently needed.
What are the changes in my PowerShell experience?
With the move to PowerShell Core 6 on a Linux container, there are a few key changes to the user experience:
By default, PowerShell experience is case-insensitive. The Linux file system operations are case sensitive (you could have files named file, File, and FILE in the same folder). After there changes, users have to mindful of casing when preforming file system operations.
Some common aliases on Windows, such as ls, sleep, etc., that map to built-in UNIX commands, will no longer work as before.
The modules I use are not supported in PowerShell Core 6, what do I do?
The PowerShell team is currently working with the module owners to port them to .NET Core. While some modules already are complete, or in the works like AzureRM, there is more to be done. We are prioritizing modules based on their usage. If there is a module that you would like to see in Cloud Shell that is not ported, provide feedback directly to the module owners.
What is happening to Cloud Shell based on Windows?
In Azure Cloud Shell, there will no longer be a Windows-based experience. Since most of the operations from Cloud Shell happens against some service endpoints and there is little to no need to manage things in the underlying OS, swapping of the underlying OS should have minimal impact. Cloud Drive will continue to be available across both experiences and serves as the best place to save your work.
What is the difference between the Bash and the PowerShell experiences?
There is no difference between the two experiences. Now that both experiences run in the same OS, the tool set will be the same. From Bash, you will be able to start the PowerShell experience by running pwsh as well as from PowerShell experience, you will be able to start the Bash experience by running bash.