Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .vscode/cspell/psdocs/dictionaries/psdocs.txt
Original file line number Diff line number Diff line change
Expand Up @@ -301,6 +301,7 @@ WBEM
WDAC
webservice
WinCompat
WinGet
wmicimv2
workgroup
workgroups
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ title: Installing PowerShell on Windows
There are multiple ways to install PowerShell in Windows. Each install method is designed to support
different scenarios and workflows. Choose the method that best suits your needs.

- [Winget][14] - Recommended way to install PowerShell on Windows clients
- [WinGet][14] - Recommended way to install PowerShell on Windows clients
- [MSI package][11] - Best choice for Windows Servers and enterprise deployment scenarios
- [ZIP package][15] - Easiest way to "side load" or install multiple versions
- Use this method for Windows Nano Server, Windows IoT, and Arm-based systems
Expand All @@ -18,16 +18,16 @@ different scenarios and workflows. Choose the method that best suits your needs.

[!INCLUDE [Latest version](../../includes/latest-install.md)]

## <a id="winget">Install PowerShell using Winget (recommended)</a>
## <a id="winget">Install PowerShell using WinGet (recommended)</a>

Winget, the Windows Package Manager, is a command-line tool enables users to discover, install,
WinGet, the Windows Package Manager, is a command-line tool enables users to discover, install,
upgrade, remove, and configure applications on Windows client computers. This tool is the client
interface to the Windows Package Manager service. The `winget` command-line tool is bundled with
Windows 11 and modern versions of Windows 10 by default as the **App Installer**.

> [!NOTE]
> See the [winget documentation][09] for a list of system requirements and install instructions.
> `Winget` isn't available on Windows Server 2022 or earlier versions. Windows Server 2025 Preview
> `winget` isn't available on Windows Server 2022 or earlier versions. Windows Server 2025 Preview
> Build 26085 and later includes `winget` for **Windows Server with Desktop Experience** only.

The following commands can be used to install PowerShell using the published `winget` packages:
Expand Down Expand Up @@ -229,15 +229,15 @@ session is running.

- If the value is `$HOME\.dotnet\tools`, PowerShell was installed with the [.NET Global tool][10].
- If the value is `$Env:ProgramFiles\PowerShell\7`, PowerShell was installed as an
[MSI package][11] or with [Winget][14] on a computer with an X86 or x64 processor.
[MSI package][11] or with [WinGet][14] on a computer with an X86 or x64 processor.
- If the value starts with `$Env:ProgramFiles\WindowsApps\`, PowerShell was installed as a
[Microsoft Store package][12] or with [Winget][14] on computer with an ARM processor.
[Microsoft Store package][12] or with [WinGet][14] on computer with an ARM processor.
- If the value is anything else, it's likely that PowerShell was installed as a [ZIP package][15].

If you installed via the MSI package, that information also appears in the
**Programs and Features** Control Panel.

To determine whether PowerShell may be upgraded with Winget, run the following command:
To determine whether PowerShell may be upgraded with WinGet, run the following command:

```powershell
winget list --name PowerShell --upgrade-available
Expand Down Expand Up @@ -382,6 +382,7 @@ can't support those methods.
[13]: #powershell-remoting
[14]: #winget
[15]: #zip
[18]: https://github.com/PowerShell/PowerShell/releases/latest
[19]: https://github.com/ms-iot/iot-adk-addonkit/blob/master/Tools/IoTCoreImaging/Docs/Import-PSCoreRelease.md#Import-PSCoreRelease
[20]: https://github.com/PowerShell/PowerShell/releases/download/v7.5.0/PowerShell-7.5.0-win-arm64.msi
[21]: https://github.com/PowerShell/PowerShell/releases/download/v7.5.0/PowerShell-7.5.0-win-arm64.zip
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
---
title: What's New in PowerShell 7.5
description: New features and changes released in PowerShell 7.5
ms.date: 01/23/2025
ms.date: 01/29/2025
---

# What's New in PowerShell 7.5

PowerShell 7.5.0 includes the following features, updates, and breaking changes. PowerShell
7.5 is built on .NET 9.0.1 GA release.

For a complete list of changes, see the [CHANGELOG][chg] in the GitHub repository.
For a complete list of changes, see the [CHANGELOG][chg] in the GitHub repository. For more
information about .NET 9, see [What's new in .NET 9][07].

## Breaking Changes

Expand Down Expand Up @@ -120,7 +121,7 @@ Many thanks to **@ArmaanMcleod** and others for all their work to improve tab co
@jborean93!)
- Add telemetry to check for specific tags when importing a module ([#20371][20371])
- Add `PSAdapter` and `ConsoleGuiTools` to module load telemetry allowlist ([#20641][20641])
- Add Winget module to track usage ([#21040][21040])
- Add WinGet module to track usage ([#21040][21040])
- Ensure the filename is not null when logging WDAC ETW events ([#20910][20910]) (Thanks
@jborean93!)
- Fix four regressions introduced by the WDAC logging feature ([#20913][20913])
Expand Down Expand Up @@ -189,25 +190,25 @@ $tests = @{
$groupResult = foreach($test in $tests.GetEnumerator()) {
$ms = (Measure-Command { & $test.Value -Count $_ }).TotalMilliseconds

[pscustomobject]@{
[pscustomobject]@{
CollectionSize = $_
Test = $test.Key
TotalMilliseconds = [math]::Round($ms, 2)
}

[GC]::Collect()
[GC]::WaitForPendingFinalizers()
[GC]::Collect()
[GC]::WaitForPendingFinalizers()
}

$groupResult = $groupResult | Sort-Object TotalMilliseconds
$groupResult | Select-Object *, @{
Name = 'RelativeSpeed'
Expression = {
$relativeSpeed = $_.TotalMilliseconds / $groupResult[0].TotalMilliseconds
$speed = [math]::Round($relativeSpeed, 2).ToString() + 'x'
if ($speed -eq '1x') { $speed } else { $speed + ' slower' }
}
} | Format-Table -AutoSize
$groupResult = $groupResult | Sort-Object TotalMilliseconds
$groupResult | Select-Object *, @{
Name = 'RelativeSpeed'
Expression = {
$relativeSpeed = $_.TotalMilliseconds / $groupResult[0].TotalMilliseconds
$speed = [math]::Round($relativeSpeed, 2).ToString() + 'x'
if ($speed -eq '1x') { $speed } else { $speed + ' slower' }
}
} | Format-Table -AutoSize
}
```

Expand Down Expand Up @@ -249,14 +250,15 @@ CollectionSize Test TotalMilliseconds RelativeSpeed

<!-- end of content -->
<!-- reference links -->
[chg]: https://github.com/PowerShell/PowerShell/blob/master/CHANGELOG/preview.md
[chg]: https://github.com/PowerShell/PowerShell/blob/master/CHANGELOG/7.5.md

[01]: ../learn/experimental-features.md#psnativewindowstildeexpansion
[02]: ../learn/experimental-features.md#pscommandnotfoundsuggestion
[03]: ../learn/experimental-features.md#pscommandwithargs
[04]: ../learn/experimental-features.md#psmoduleautoloadskipofflinefiles
[05]: ../learn/experimental-features.md#psredirecttovariable
[06]: ../learn/experimental-features.md#psserializejsonlongenumasnumber
[07]: /dotnet/core/whats-new/dotnet-9/overview)

[19896]: https://github.com/PowerShell/PowerShell/pull/19896
[20014]: https://github.com/PowerShell/PowerShell/pull/20014
Expand Down