-
Notifications
You must be signed in to change notification settings - Fork 158
Description
Prerequisites
- Write a descriptive title.
- Make sure you are able to repro it on the latest released version
- Search the existing issues.
- Refer to the FAQ.
- Refer to Differences between Windows PowerShell 5.1 and PowerShell.
Steps to reproduce
The currently provided updatable help files lack certain annotations, making the help information not reader-friendly. This issue also reproduced on Windows PowerShell 5.1. (See $PSVersionTable section.)
Use the ZIP version of PowerShell 7.5.2 on Windows 11 version 24H2.
- Run
Get-Help Get-Helpand observe the output (excerpt below):
NAME
Get-Help
SYNTAX
Get-Help [[-Name] <string>] [-Path <string>] [-Category {Alias | Cmdlet | Provider | General | FAQ | Glossary | HelpFile | ScriptCommand |
Function | Filter | ExternalScript | All | DefaultHelp | DscResource | Class | Configuration}] [-Full] [-Component <string[]>]
[-Functionality <string[]>] [-Role <string[]>] [<CommonParameters>]
- Run
Update-Help -Force -Scope CurrentUser; Get-Help Get-Helpon 2025-09-09 (or any time before this issue is resolved) and observe the output (excerpt below):
NAME
Get-Help
SYNOPSIS
Displays information about PowerShell commands and concepts.
SYNTAX
Get-Help [-Category <System.String[]>] [-Component <System.String[]>] [-Full <System.Management.Automation.SwitchParameter>]
[-Functionality <System.String[]>] [[-Name] <System.String>] [-Path <System.String>] [-Role <System.String[]>] [<CommonParameters>]
- Run
Function Use-MyFunction
{
[CmdletBinding()]
Param
(
[string[]]$a,
[switch]$b,
[ValidateSet('u', 'v', 'w')][string]$c
)
Begin { }
}
Get-Help Use-MyFunctionand observe the output (excerpt below):
NAME
Use-MyFunction
SYNTAX
Use-MyFunction [[-a] <string[]>] [[-c] {u | v | w}] [-b] [<CommonParameters>]
Expected behavior
In step 1, the output is reader-friendly as expected:
- Common type names such as
System.Stringare abbreviated, e.g.,string. - A parameter with
ValidateSetdisplays the candidate values (seeCategory). - A switch parameter is simply shown as
-ParameterName(mandatory, often for parameter set overload resolution) or[-ParameterName](non-mandatory).
In step 2, the output should also be user-friendly.
In step 3, the output is indeed user-friendly.
Actual behavior
In step 2, the observed output is terrible:
- Common types lose abbreviation.
- Parameters with
ValidateSetdoes not list candidates. - Switch parameters are shown as
-ParameterName <System.Management.Automation.SwitchParameter>.
Error details
Note that step 3 still produces good output, which means PowerShell still generates good help information from cmdlet attributes. The issue is caused by updatable help XML files.
I put the relevant files and analysis in my repo GeeLaw/PowerShell-HelpFile-Bug. Long story short: The most recent version of updatable help files hosted on Microsoft servers lack certain annotations.
To my knowledge, the last known good version is on 2016-11-28, which I downloaded on 2019-09-21. I discovered the issue with 2025-09-08 version on 2025-09-09, when I tried to update help for a new machine.
Environment data
Name Value
---- -----
PSVersion 7.5.2
PSEdition Core
GitCommitId 7.5.2
OS Microsoft Windows 10.0.26100
Platform Win32NT
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0
This issue also reproduces on Windows PowerShell 5.1. I don't want to use Feedback Hub app because I have lost faith in it. Also, my guess is that there isn't a separate team for handling online updatable help files for Windows PowerShell vs PowerShell, so an issue here should be sufficient. The Windows PowerShell 5.1 $PSVersionTable output is
Name Value
---- -----
PSVersion 5.1.26100.3624
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.26100.3624
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
Visuals
No response