Using PowerShell automation, one could easily automate the most common tasks. The future for PowerShell as the automation framework is bright. Shipping PowerShell core on the hybrid platform has opened up new markets, new customers, and new opportunities for Microsoft. At the same time, we still strongly believe in Powershell on Windows Server, Linux and macOS as a great combination for automation.
Let us learn how Powershell is used as the automation toolset for all the Administrators, Developers, and Cloud engineers. Using PowerShell you will rediscover the new ways to automate Cloud tasks. PowerShell offering initially built only to manage the Windows platform. Later, PowerShell becomes the de-facto tool to manage On-Premise and Cloud infrastructures. Microsoft strategically brought an open-sourced version of PowerShell known as PowerShell core and made it available on Windows, Linux, and macOS. Now, it is a one-stop solution to manage cross-platform infrastructures.
Why is PowerShell so important?
PowerShell is a rich collection of libraries built on the .NET Core framework—you can automate practically every aspect of the cloud and on-premise infrastructure. Do you agree? Let us dissect the details.
.Net framework enables PowerShell with a fully-featured command-line shell. PowerShell interactive shell offers a variety of features that make cmdlets are so powerful and efficient command-line tools: command substitution, variable expansion, and more. PowerShell automation becomes a defacto tool to solve most of the infrastructure management.
Why PowerShell cmdlets so easy to use?
Due to its simple construct, we can use it in the way our mind thinks. In addition to traditional programs and operating system commands (CMD.exe), you can also use PowerShell cmdlets. The cmdlets can be created by anyone. The core Microsoft PowerShell team creates the core cmdlets, but many other teams and community-based enthusiasts or specialists are also involved in creating the hundreds of cmdlets that are bundled and shipped to the public repositories. The modules are the functions that take advantage of the facilities built into .Net framework namespace, and therefore are easy to build and write cmdlets. These cmdlets are the building blocks of Powershell automation.
PowerShell introduces a new type of powerful commands, known as cmdlets (pronounced “command-let”) which share a common Verb-Noun syntax. All cmdlets are named in a Verb-Noun pattern, such as Get-Process, Get-Content, Get-Help, Get-AzResourceGroup, Get-VcsUser, and Stop-Process. PowerShell automation can be leveraged to build workflows and apps that help you to build and manage cloud infrastructures.
To check your PowerShell version, run the following command:
1 |
$PSVersionTable.PSVersion |
It is possible to install multiple versions of Azure PowerShell modules. To check the installed Azure PowerShell modules, run the following command:
1 |
Get-InstalledModule -Name Az -AllVersions | Select-Object -Property Name, Version |
To check Azure CLI modules version and extensions, run the following command:
1 |
az version |
To find the loaded module, run the following the command
1 |
Find-Module -Name Azure,AzureRM,Az |
By now, you can say that the use of cmdlets is simple and straightforward.
The history of PowerShell
This table data is important to understand the evolution of PowerShell. The matter of the fact that we still use PowerShell 2.0. It doesn’t mean that you need to use PowerShell 2.0. We are using all the way up to PowerShell 7.0. It is recommended to use the latest version of PowerShell. In some cases, it is the developer’s choice or complexity of the process that may lead to the use of the legacy version. The use of different PowerShell version may be based on the preference or maybe perhaps a standard within your company. You should know the features in order to build a good automation task.
Using Powershell automation techniques and ideas, many mundane and repetitive tasks can be automated to allow administrators to focus on more important tasks.
PowerShell |
Release Date |
OS |
Features |
PowerShell 1.0 |
November 2006 |
Windows XP SP2, Windows Server 2003 SP1 and Windows Vista |
PowerShell 1.0 started a new revolution for all the administrators. It’s a major steep to use cmdlets. |
PowerShell 2.0 |
October 2009 |
Windows 7, Windows Server 2008, Windows XP with SP3, Windows Server 2003 SP2, and Windows Vista SP1 |
PowerShell v2 made a breakthrough into the scripting language and hosting API. It in-housed more than 240 new cmdlets. Remoting, Background jobs and script debugging is the major breakthrough of this release |
PowerShell 3.0 |
September 2012 |
PowerShell 3.0 integrated with Windows 8 and with Windows Server 2012. Windows 7 SP1, Windows Server 2008 SP1, and Windows Server 2008 R2 SP 1 |
Job scheduling, integration WinRM service for remoting, Improved code writing IDE environment, intellisence for auto-detection of cmdlets and more |
PowerShell 4.0 |
October 2013 |
It is an inbuilt feature of Windows 8.1 and with Windows Server 2012 R2, Windows 7 SP1, Windows Server 2008 R2 SP1 and Windows Server 2012 |
Support for Desired State Configuration (DSC) modules used for build, provision, deploy and manage the configuration of systems. |
PowerShel 5.0 |
February 24, 2016 |
Windows Management Framework (WMF) 5.0 RTM includes PowerShell 5.0. Windows 7 SP1, Windows 8.1, Windows Server 2012, and Windows Server 2012 R2 |
Enhancement DSC modules and support to .Net enumerations and classes. |
PowerShell 5.1 |
August 2, 2016 |
In built with Windows 10 and Windows Server 2016. And Windows 7 SP1, Windows 8.1, Windows Server 2008 R2 SP1, Windows Server 2012, and Windows Server 2012 R2 |
PowerShell 5.1 released in two editions “Desktop version” and “Core version” This was the last exclusive PowerShell made for the Windows Operating system. |
PowerShell Core 6+ |
August 2016 |
Windows 10,Windows Server 2008 R2 SP1+,Windows Server 2012,Windows Server 2012 R2,Windows Server 2016, Windows Server 2019, Ubuntu 14.04,Ubuntu 16.04, Ubuntu 17.04,DEbian 8.7, CentOS 7, RHEL 7, OpenSUSE 42.2, Fedora 25+, macOS 10.12+ |
Fully cross-platform support on Windows, Linux and macOS. |
PowerShell 7 |
December 3, 2019 |
Windows 7, 8.1, and 10 Windows Server 2008 R2, 2012, 2012 R2, 2016, and 2019, macOS 10.13+, Red Hat Enterprise Linux (RHEL) / CentOS 7+, Fedora 29+, Debian 9+, Ubuntu 16.04+, openSUSE 15+, and Alpine Linux 3.8+ |
PowerShell 7 is the replacement product for PowerShell Core 6.x and Windows PowerShell 5.1—the last supported Windows PowerShell version. The framework optimized for handling structured data such as JSON, CSV, XML, REST APIs, and object models |
What is Automation?
Automation is a process of identifying the routine tasks and define a technique to process or operate the identified tasks automatically. PowerShell automation can save administrators time and effort
Let’s explore some of the most notable benefits.
- Automation increases productivity by removing manual interventions, human errors, and speeding up the different tasks and processes that are time-intensive and prone to error
- Automation eliminates unnecessary capital expenditures as it helps develop stable processes that inch towards backups and rollovers, thereby allowing organizations to save more
- It is easy to adopt automation to standardize processes
- With automation, we also get faster delivery, mainly because automation ensures repeatability of workflows, processes, protocols, and metrics
- Risks are greatly reduced with automation as it standardizes processes and increases the validity of workflows
- Finally, automation also allows for better monitoring by creating real-time reports for measurable metrics like deployment frequency, change-fail-rates, Mean-Time-To-Recover (MTTR), and lead-time for changes
Let us deep-dive into the details to understand more about the PowerShell automation. For example, the Azure automation framework is used to manage the IT Cloud infrastructure efficiently and effectively. In our environment, the Test or Dev VMs are stopped and started automatically on a scheduled basis. This will have a direct impact on reducing costs.
To run a maintenance job on Azure SQL Databases, we may opt for Azure automation. We can use the template to standardize the process.
It is easy to integrate PowerShell Azure CLI commands in Bash scripting this makes life easier for Linux administrators to manage Azure Cloud platform.
Monitoring and alerting, you can use Get-AzMetricDefinition -ResourceId <Resource ID> cmdlet to get into the details of all the metrics.
- Note: Azure provides a more sophisticated way to monitor the Cloud resources using Log Analytics
Wrap up
This article has provided a whistle-stop tour of the benefits PowerShell brings to the table. We’ve looked at the philosophies and guiding principles behind PowerShell. I will discuss more about the creation and development of PowerShell automation, as well as the tradeoffs Linux administrators made when implementing the automation ideas to manage Cloud infrastructure. We’ve also looked at some of the key terms used in the article. Stay tuned to get more updates in this series on PowerShell automation.
Table of contents
- Stairway to SQL essentials - April 7, 2021
- A quick overview of database audit in SQL - January 28, 2021
- How to set up Azure Data Sync between Azure SQL databases and on-premises SQL Server - January 20, 2021