From 1ebddea57e55b634237a29dd05ef0ec541bd0f7d Mon Sep 17 00:00:00 2001 From: Sean Wheeler Date: Wed, 22 Oct 2025 09:35:12 -0500 Subject: [PATCH 1/3] Update lifecycle table (#12455) --- .../install/PowerShell-Support-Lifecycle.md | 33 ++++++++++--------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/reference/docs-conceptual/install/PowerShell-Support-Lifecycle.md b/reference/docs-conceptual/install/PowerShell-Support-Lifecycle.md index 3db37f0b4bc4..d6bf48bd3fda 100644 --- a/reference/docs-conceptual/install/PowerShell-Support-Lifecycle.md +++ b/reference/docs-conceptual/install/PowerShell-Support-Lifecycle.md @@ -1,6 +1,6 @@ --- description: Details the policies governing support for PowerShell. -ms.date: 02/25/2025 +ms.date: 10/22/2025 ms.topic: lifecycle title: PowerShell Support Lifecycle --- @@ -15,7 +15,7 @@ PowerShell follows the [Microsoft Modern Lifecycle Policy][02]. Support dates fo [.NET Support Policy][06]. In this servicing approach, customers can choose Long Term Support (LTS) releases or current releases. -An **LTS** release of PowerShell is built on an **LTS** release of .NET. Updates to an **LTS** +An **LTS** release of PowerShell is an **LTS** release of .NET. Updates to an **LTS** release only contain critical security updates and servicing fixes that are designed to minimize impact on existing workloads. @@ -110,23 +110,23 @@ guarantees of responsiveness or fixes. The PowerShell support lifecycle follows the [support lifecycle of .NET][06]. The following table lists the end-of-support dates for the current versions of PowerShell: -| Version | Release Date | End-of-support | .NET Version | -| ------------------------ | :----------: | :------------: | ------------------------- | -| PowerShell 7.6 (preview) | Future date | Future date | Built on [.NET 9.0.0][14] | -| PowerShell 7.5 | 23-Jan-2025 | 12-May-2026 | Built on [.NET 9.0.0][14] | -| PowerShell 7.4 (LTS) | 16-Nov-2023 | 10-Nov-2026 | Built on [.NET 8.0.0][13] | +| Version | Release Date | End-of-support | .NET Version | +| ------------------------ | :----------: | :------------: | --------------- | +| PowerShell 7.6 (preview) | Future date | Future date | [.NET 10.0][19] | +| PowerShell 7.5 | 23-Jan-2025 | 12-May-2026 | [.NET 9.0][14] | +| PowerShell 7.4 (LTS) | 16-Nov-2023 | 10-Nov-2026 | [.NET 8.0][13] | The following table lists the end-of-support dates for retired versions of PowerShell: -| Version | Release Date | End-of-support | .NET Version | -| -------------------- | :----------: | :------------: | ---------------------------- | -| PowerShell 7.3 | 09-Nov-2022 | 08-May-2024 | Built on [.NET 7.0][12] | -| PowerShell 7.2 (LTS) | 08-Nov-2021 | 08-Nov-2024 | Built on [.NET 6.0][11] | -| PowerShell 7.1 | 11-Nov-2020 | 08-May-2022 | Built on [.NET 5.0][10] | -| PowerShell 7.0 (LTS) | 04-Mar-2020 | 03-Dec-2022 | Built on [.NET Core 3.1][09] | -| PowerShell 6.2 | 29-Mar-2019 | 04-Sep-2020 | Built on [.NET Core 2.1][08] | -| PowerShell 6.1 | 13-Sep-2018 | 28-Sep-2019 | Built on [.NET Core 2.1][08] | -| PowerShell 6.0 | 20-Jan-2018 | 13-Feb-2019 | Built on [.NET Core 2.0][07] | +| Version | Release Date | End-of-support | .NET Version | +| -------------------- | :----------: | :------------: | ------------------- | +| PowerShell 7.3 | 09-Nov-2022 | 08-May-2024 | [.NET 7.0][12] | +| PowerShell 7.2 (LTS) | 08-Nov-2021 | 08-Nov-2024 | [.NET 6.0][11] | +| PowerShell 7.1 | 11-Nov-2020 | 08-May-2022 | [.NET 5.0][10] | +| PowerShell 7.0 (LTS) | 04-Mar-2020 | 03-Dec-2022 | [.NET Core 3.1][09] | +| PowerShell 6.2 | 29-Mar-2019 | 04-Sep-2020 | [.NET Core 2.1][08] | +| PowerShell 6.1 | 13-Sep-2018 | 28-Sep-2019 | [.NET Core 2.1][08] | +| PowerShell 6.0 | 20-Jan-2018 | 13-Feb-2019 | [.NET Core 2.0][07] | ## Windows PowerShell release history @@ -168,3 +168,4 @@ you're running: [16]: https://github.com/PowerShell/PowerShell/issues/new/choose [17]: https://support.microsoft.com/contactus [18]: https://support.serviceshub.microsoft.com/ +[19]: https://github.com/dotnet/core/blob/main/release-notes/10.0/supported-os.md From 6c07d991fa02d03b52fe46399737461c0d0e7cf4 Mon Sep 17 00:00:00 2001 From: OscarFalck17 <217069342+OscarFalck17@users.noreply.github.com> Date: Wed, 22 Oct 2025 17:02:28 +0200 Subject: [PATCH 2/3] Update hashtable documentation with cloning note (#12454) * Update hashtable documentation with cloning note Added note about cloning hashtables with a single key and provided an example using PowerShell. * Update reference/docs-conceptual/learn/deep-dives/everything-about-hashtable.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Editorial changes --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Sean Wheeler --- .../learn/deep-dives/everything-about-hashtable.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/reference/docs-conceptual/learn/deep-dives/everything-about-hashtable.md b/reference/docs-conceptual/learn/deep-dives/everything-about-hashtable.md index 756aeaf39f30..e4ddf78701b8 100644 --- a/reference/docs-conceptual/learn/deep-dives/everything-about-hashtable.md +++ b/reference/docs-conceptual/learn/deep-dives/everything-about-hashtable.md @@ -1,7 +1,7 @@ --- description: Hashtables are really important in PowerShell so it's good to have a solid understanding of them. ms.custom: contributor-KevinMarquette -ms.date: 06/25/2023 +ms.date: 10/22/2025 title: Everything you wanted to know about hashtables --- # Everything you wanted to know about hashtables @@ -269,6 +269,16 @@ $environments.Keys.Clone() | ForEach-Object { } ``` +> [!NOTE] +> You can't clone a hashtable containing a single key. PowerShell throws an error. Instead, you +> convert the **Keys** property to an array, then iterate over the array. + +```powershell +@($environments.Keys) | ForEach-Object { + $environments[$_] = 'SrvDev03' +} +``` + ## Hashtable as a collection of properties So far the type of objects we placed in our hashtable were all the same type of object. I used ages From 9ae0a03e1f7d26415bc8d9f094fe868bb8348734 Mon Sep 17 00:00:00 2001 From: Sean Wheeler Date: Wed, 22 Oct 2025 10:10:43 -0500 Subject: [PATCH 3/3] Update broken link (#12456) --- .../5.1/PSWorkflow/About/about_Workflows.md | 63 +++++++++++-------- 1 file changed, 37 insertions(+), 26 deletions(-) diff --git a/reference/5.1/PSWorkflow/About/about_Workflows.md b/reference/5.1/PSWorkflow/About/about_Workflows.md index 29bb5e701701..4dafea84d683 100644 --- a/reference/5.1/PSWorkflow/About/about_Workflows.md +++ b/reference/5.1/PSWorkflow/About/about_Workflows.md @@ -16,13 +16,12 @@ Provides a brief introduction to the PowerShell Workflow feature. ## Long description PowerShell Workflow brings the benefits of the -[Windows Workflow Foundation](/dotnet/framework/windows-workflow-foundation) to -PowerShell and enables you to write and run workflows. +[Windows Workflow Foundation][05] to PowerShell and enables you to write and +run workflows. PowerShell Workflow was introduced in PowerShell 3.0 and the module is available up to PowerShell 5.1. For more information about PowerShell Workflow, -see the [Workflows Guide](/previous-versions/powershell/scripting/components/workflows-guide) -and [Writing a Windows PowerShell Workflow](/previous-versions/powershell/scripting/developer/workflow/writing-a-windows-powershell-workflow). +see the [Workflows Guide][07] and [Writing a Windows PowerShell Workflow][08]. ## About workflows @@ -34,7 +33,7 @@ environments. Workflows can be written in XAML, the language used in Windows Workflow Foundation, or in the PowerShell language. Workflows are typically packaged in modules and include help topics. For more information, see -[XAML Overview (WPF)](/dotnet/framework/wpf/advanced/xaml-overview-wpf). +[XAML Overview (WPF)][06]. Workflows are critical in an IT environment because they can survive reboots and recover automatically from common failures. You can disconnect and @@ -65,7 +64,7 @@ A PowerShell Workflow configuration consists of the following elements: The workflow session isn't required, but is recommended. **PSSessions** can take advantage of the robust recovery and Disconnected Sessions features of PowerShell to recover disconnected workflow sessions. For more information, see -[about_Remote_Disconnected_Sessions](../../Microsoft.PowerShell.Core/About/about_Remote_Disconnected_Sessions.md) +[about_Remote_Disconnected_Sessions][03] Because the client computer and the computer on which the workflow session runs can be managed nodes, you can run a workflow on a single computer that fulfills @@ -122,11 +121,9 @@ To run a workflow, use the following procedure. Enable-PSRemoting -Force ``` - You can enable remoting by using the **Turn on Script Execution** Group Policy - setting. For more information, see - [about_Group_Policy_Settings](../../Microsoft.PowerShell.Core/About/about_Group_Policy_Settings.md) - and - [about_Execution_Policies](../../Microsoft.PowerShell.Core/About/about_Execution_Policies.md). + You can enable remoting by using the **Turn on Script Execution** Group + Policy setting. For more information, see [about_Group_Policy_Settings][02] + and [about_Execution_Policies][01]. 1. Use the `New-PSWorkflowSession` or `New-PSSession` cmdlets to create the workflow session. @@ -136,8 +133,8 @@ To run a workflow, use the following procedure. computer. This session configuration includes scripts, type and formatting files, and options that are designed for workflows. - Or, use the `New-PSSession` cmdlet. Use the **ConfigurationName** parameter to - specify the **Microsoft.PowerShell.Workflow** session configuration. This + Or, use the `New-PSSession` cmdlet. Use the **ConfigurationName** parameter + to specify the **Microsoft.PowerShell.Workflow** session configuration. This command is the same as using the `New-PSWorkflowSession` cmdlet. An alternative is to use the `New-PSSession` cmdlet. Use the @@ -160,10 +157,10 @@ To run a workflow, use the following procedure. $ws = New-PSWorkflowSession @newPSWorkflowSessionSplat ``` - If you are an Administrator on the workflow session computer, you can use the - `New-PSWorkflowExecutionOption` cmdlet to create custom option settings for the - workflow session configuration. And, use the `Set-PSSessionConfiguration` - cmdlet to change the session configuration. + If you are an Administrator on the workflow session computer, you can use + the `New-PSWorkflowExecutionOption` cmdlet to create custom option settings + for the workflow session configuration. And, use the + `Set-PSSessionConfiguration` cmdlet to change the session configuration. ```powershell $newPSWorkflowExecutionOptionSplat = @{ @@ -204,13 +201,13 @@ To run a workflow, use the following procedure. ``` The following example runs the `Test-Workflow` on hundreds of computers. The - `Get-Content` cmdlet gets the computer names from a text file and saves them in - the `$Servers` variable on the local computer. + `Get-Content` cmdlet gets the computer names from a text file and saves them + in the `$Servers` variable on the local computer. `Invoke-Command` uses the `Using:` scope modifier to define the `$Servers` variable in the local session. For more information about the `Using:` scope modifier, see - [about_Remote_Variables](../../Microsoft.PowerShell.Core/About/about_Remote_Variables.md). + [about_Remote_Variables][04]. ```powershell $Servers = Get-Content Servers.txt @@ -291,12 +288,26 @@ Some workflow common parameters are unique to workflows, such as the **PSParameterCollection** parameter that lets you specify different workflow common parameter values for different remote nodes. For a list and description of the workflow common parameters, see -[about_WorkflowCommonParameters](about_WorkflowCommonParameters.md). +[about_WorkflowCommonParameters][09]. ## See also -- [Invoke-AsWorkflow](xref:PSWorkflowUtility.Invoke-AsWorkflow) -- [New-PSSession](xref:Microsoft.PowerShell.Core.New-PSSession) -- [PSWorkflow](xref:PSWorkflow) cmdlets -- [Workflows Guide](/previous-versions/powershell/scripting/components/workflows-guide) -- [Writing a Windows PowerShell Workflow](/previous-versions/powershell/scripting/developer/workflow/writing-a-windows-powershell-workflow) +- [Invoke-AsWorkflow][12] +- [New-PSSession][10] +- [PSWorkflow][11] cmdlets +- [Workflows Guide][07] +- [Writing a Windows PowerShell Workflow][08] + + +[01]: ../../Microsoft.PowerShell.Core/About/about_Execution_Policies.md +[02]: ../../Microsoft.PowerShell.Core/About/about_Group_Policy_Settings.md +[03]: ../../Microsoft.PowerShell.Core/About/about_Remote_Disconnected_Sessions.md +[04]: ../../Microsoft.PowerShell.Core/About/about_Remote_Variables.md +[05]: /dotnet/framework/windows-workflow-foundation +[06]: /dotnet/desktop/wpf/xaml +[07]: /previous-versions/powershell/scripting/components/workflows-guide +[08]: /previous-versions/powershell/scripting/developer/workflow/writing-a-windows-powershell-workflow +[09]: about_WorkflowCommonParameters.md +[10]: xref:Microsoft.PowerShell.Core.New-PSSession +[11]: xref:PSWorkflow +[12]: xref:PSWorkflowUtility.Invoke-AsWorkflow