PowerShell is a cross-platform automation and configuration management framework developed by Microsoft, combining a command-line shell and a scripting language. Initially released in 2006, PowerShell has evolved significantly, expanding its capabilities across platforms and enhancing the features for system administrators and developers. Below is a comprehensive version history of PowerShell, highlighting key features and improvements introduced with each major version.
PowerShell 7.3 (November 2022)
PowerShell 7.3 was a release focused on performance improvements, enhanced debugging, and new cmdlet features.
Key features:
**Improved logging and diagnostics**: Enhancements to logging capabilities allow for more detailed and structured logging in system automation tasks.
**Pipeline performance improvements**: Optimized performance of pipelines, which is especially beneficial for handling large data streams.
**New cmdlet features**: Additional cmdlet parameters and new cmdlets focused on system management tasks, including working with JSON and web requests.
Official documentation: https://learn.microsoft.com/en-us/powershell/scripting/whats-new/what-s-new-in-powershell-73
PowerShell 7.2 (November 2021)
PowerShell 7.2 was a major long-term servicing release (LTS), focusing on stability, performance improvements, and bug fixes.
Key features:
**Improved native command support**: Enhanced support for native commands, allowing easier integration with Linux and macOS tools.
**Predictive IntelliSense**: Added more predictive suggestions based on context, improving developer productivity.
**Telemetry updates**: Improved diagnostic data collection with more granular control, enhancing performance and stability tracking.
Official documentation: https://learn.microsoft.com/en-us/powershell/scripting/whats-new/what-s-new-in-powershell-72
PowerShell 7.1 (November 2020)
PowerShell 7.1 introduced additional features aimed at enhancing the cross-platform experience and overall performance.
Key features:
**Compatibility with older modules**: Improved backward compatibility for modules designed for Windows PowerShell, making it easier to run legacy scripts on newer systems.
**Pipeline improvements**: Better performance for the PowerShell pipeline, leading to faster data processing in automation scripts.
**Predictive IntelliSense**: Initial release of predictive IntelliSense, helping users write commands faster with suggestions based on previous command history.
Official documentation: https://learn.microsoft.com/en-us/powershell/scripting/whats-new/what-s-new-in-powershell-71
PowerShell 7.0 (March 2020)
PowerShell 7.0 was a significant release that marked the transition from PowerShell Core to simply PowerShell, aligning it with the cross-platform efforts.
Key features:
**Unified PowerShell**: Dropped the “Core” label, unifying PowerShell under one major version for Windows, Linux, and macOS.
**New operators**: Added the null-coalescing operators (`??`, `??=`), and the ternary conditional operator (`? :`), enhancing scripting capabilities.
**Parallel execution of `ForEach-Object`**: Introduced the `-Parallel` parameter to `ForEach-Object`, enabling concurrent execution in scripts.
-
Key features:
**Reduced startup time**: PowerShell Core 6.2 improved the startup time significantly, making it faster to launch on various platforms.
**Parallel jobs**: Introduced enhancements in running parallel jobs and background processing in scripts.
**Improved error handling**: Enhanced error handling with new cmdlets to handle exceptions more effectively in automation scripts.
Official documentation: https://learn.microsoft.com/en-us/powershell/scripting/whats-new/what-s-new-in-powershell-core-62
PowerShell Core 6.1 (September 2018)
PowerShell Core 6.1 was the first version to provide significant cross-platform compatibility improvements and overall performance enhancements.
Key features:
**Cross-platform improvements**: Enhanced support for Linux and macOS environments, with improved native command compatibility on these platforms.
**Windows Compatibility Module**: Allowed users to run traditional Windows PowerShell modules and cmdlets on PowerShell Core.
**Improved remoting**: Enhanced support for SSH-based remoting, allowing for secure cross-platform remote management.
Official documentation: https://learn.microsoft.com/en-us/powershell/scripting/whats-new/what-s-new-in-powershell-core-61
PowerShell Core 6.0 (January 2018)
PowerShell Core 6.0 was the first major release of PowerShell Core, marking the shift to a fully cross-platform version of PowerShell that runs on Windows, Linux, and macOS.
Key features:
**Cross-platform support**: The major highlight was cross-platform compatibility, enabling PowerShell to run on Linux and macOS in addition to Windows.
**Built on .NET Core**: PowerShell Core was built on
.NET Core, allowing for better performance, modularity, and platform independence.
**Simplified remoting**: Support for `SSH` remoting in addition to traditional Windows remoting, allowing more flexible and secure remote administration.
-
Official documentation: https://learn.microsoft.com/en-us/powershell/scripting/whats-new/what-s-new-in-powershell-core-60
Windows PowerShell 5.1 (January 2017)
Windows PowerShell 5.1 was the final release of Windows PowerShell before the transition to PowerShell Core and introduced several new features.
Key features:
**PowerShell Web Access**: Enhanced the ability to use PowerShell remotely via web browsers through the PowerShell Web Access Gateway.
**Enhanced Windows Defender cmdlets**: Added new cmdlets to interact with and manage Windows Defender from PowerShell.
**PowerShell remoting over SSH**: Introduced experimental support for remoting via SSH, allowing more flexible cross-platform remote management.
Official documentation: https://docs.microsoft.com/en-us/powershell/scripting/whats-new/what-s-new-in-powershell-51
Windows PowerShell 5.0 (February 2016)
Windows PowerShell 5.0 introduced significant new features, especially around configuration management and scripting.
Key features:
**PowerShellGet**: Introduced the `PowerShellGet` module, enabling users to discover, install, update, and publish PowerShell modules from the PowerShell Gallery.
**Class definitions**: Added support for defining classes and enums, allowing object-oriented programming features in PowerShell scripts.
**OneGet (PackageManagement)**: Introduced package management capabilities, allowing for easier management of software packages from various sources.
**DSC (Desired State Configuration) improvements**: Further enhancements to DSC, allowing more fine-tuned configuration and management of systems.
Official documentation: https://docs.microsoft.com/en-us/powershell/scripting/whats-new/what-s-new-in-powershell-50
Windows PowerShell 4.0 (October 2013)
Windows PowerShell 4.0 focused on Desired State Configuration (DSC), which allowed for declarative configuration management of systems.
Key features:
**Desired State Configuration (DSC)**: Introduced the DSC framework, which enables administrators to declaratively define and enforce system configurations.
**Enhanced remoting**: Improvements to PowerShell remoting, making it easier to manage multiple systems in parallel.
**Workflow improvements**: Enhancements to PowerShell Workflows for long-running, parallel tasks.
Official documentation: https://docs.microsoft.com/en-us/powershell/scripting/whats-new/what-s-new-in-powershell-40
Windows PowerShell 3.0 (September 2012)
Windows PowerShell 3.0 introduced several new features aimed at improving automation and management tasks.
Key features:
**Workflows**: Introduced support for workflows, which allow complex, long-running tasks to be written in PowerShell and resumed after interruptions.
**Scheduled Jobs**: Introduced cmdlets for scheduling and managing background jobs, allowing tasks to be automated on a schedule.
**Simplified syntax**: Various syntax improvements made PowerShell easier to use, including the introduction of auto-completion for cmdlet parameters.
Official documentation: https://docs.microsoft.com/en-us/powershell/scripting/whats-new/what-s-new-in-powershell-30
Windows PowerShell 2.0 (October 2009)
Windows PowerShell 2.0 was a significant release that expanded the scripting capabilities of PowerShell.
Key features:
**PowerShell remoting**: Introduced remoting, allowing administrators to run commands on remote machines, simplifying large-scale management.
**Modules**: Introduced support for PowerShell modules, enabling better modularization of scripts and functions.
**Integrated Scripting Environment (ISE)**: Released the ISE, providing an improved development environment for writing and debugging PowerShell scripts.
Official documentation: https://docs.microsoft.com/en-us/powershell/scripting/whats-new/what-s-new-in-powershell-20
Windows PowerShell 1.0 (
November 2006)
Windows PowerShell 1.0 was the initial release, bringing powerful scripting and automation capabilities to the Windows environment.
Key features:
**Cmdlets**: Introduced the concept of cmdlets (lightweight commands), which are specialized .NET functions used to perform specific tasks in automation scripts.
**Pipelines**: Introduced the use of pipelines to pass output from one cmdlet as input to another, enabling efficient data manipulation and task automation.
**Object-oriented output**: Unlike traditional shells that use text streams, PowerShell introduced object-oriented output, allowing data to be passed between cmdlets in structured forms.
Official documentation: https://docs.microsoft.com/en-us/powershell/scripting/whats-new/what-s-new-in-powershell-10