A few weeks ago, ITPro Today contributor Christopher Tozzi, put together his list of top programming languages for DevOps. He had a simple goal: Explain why he thought Go, Python, Scala, Ruby, and C were superior programming languages as part of a tool kit for those working in DevOps.
In that article, he built his list based on six key criteria:
Scalability, so that you can meet fluctuating user demand.
Efficiency, in terms of both application performance and in staff members' time.
Modularity, which makes programming more efficient and can help to build microservices-oriented applications.
High performance, because DevOps should encourage quality and an excellent user experience.
Familiarity, because, ideally, you want your engineers to be accustomed to using the technology you work with before they join your team, so that they don't have to learn everything from the ground up.
Portability, since the deployment environment or operating system you target today may change in the future.
As Tozzi said in his follow up comment on the original article after seeing the responses on social media, “PowerShell is a scripting language and doesn’t qualify as a ‘programming language’ in the formal sense of the term.”
He concluded by saying, “That's not to knock PowerShell or its fans. It's a powerful scripting language, to be sure. But I don't think it fits the bill for DevOps programming.”
However, since the subject of PowerShell came up as a result of Christopher’s article, let's talk about the benefits of PowerShell as a scripting language and how it can benefit anyone working in DevOps.
I had a conversation with Mick Pletcher, a Microsoft Most Valuable Professional (MVP) for Cloud and Data Center Management. His website, MickIT.com, is number 30 on the list of Top 50 PowerShell blogs on Feedspot.
The first thing I asked him was where he thought PowerShell should fall on a list when comparing scripting languages vs programming languages. Pletcher confirmed that PowerShell is most certainly a scripting language, a very powerful one at that, but Tozzi was correct in not listing it among programming languages for DevOps.
Pletcher added that PowerShell scripts can be compiled as executables for distribution and use, but they are still scripts that are executing inside of that file and not a programming language of any kind. He also confirmed that PowerShell’s number one purpose for DevOps, System Admins, and IT Pros is the automation of various administration tasks. Today, most Microsoft products and services have hooks in them that can be used with PowerShell. In addition, some OEMS like Cisco and VMWare are adding similar capabilities into services that enable the use of PowerShell for system management.
I asked what he considered the top uses of PowerShell and he gave me this list of possible scenarios:
- Automating repetitive tasks.
- Deploying software.
- Managing servers across a domain.
- Managing users in Active Directory.
- Parsing logs & retrieving system information/statistics for reports.
- Managing system operating system images for deployment.
- Working with on-premises, hybrid cloud, and with cloud providers such as Amazon Web Services, Google Cloud Platform, and Microsoft Azure.
- Performing forensic related searches of system logs to investigate breaches, threats, and other access related concerns.
He also added that when PowerShell is used in these hybrid cloud and full cloud environments, there is a cost savings because it is faster to run a PowerShell script to perform management tasks versus sitting at a computer with a remote connection to the cloud service and manually performing these work items. When connection time costs money, the less time you are connected obviously means reduced overall costs.
As we were wrapping up our conversation, I went back to the metrics that Tozzi used as he picked the programming languages for his DevOps list:
- High Performance
When you look at the list of uses that Pletcher provided during our chat, you will find that each of the attributes listed above can be applied to that list of capabilities.
The six criteria Tozzi defined were initially meant for programming languages, but it seems they are key aspects you should always look for when researching any tool you might be looking at for use in your organization when you're assessing, maintaining or improving your organization's IT..
You can learn more about Microsoft PowerShell at the PowerShell Documentations Portal.