PowerShell / PowerShell/platyPS

Updatable help provided on Microsoft servers since 2025-09-08 are bad and `Get-Help` gives reader-unfriendly output after `Update-Help`

Open
#818 2 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Area-MAML
Dominant language
C#
Stars
871
Forks
166
Avg merge
21h 17m
Merged PRs (30d)
1

Description

Prerequisites
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.

  1. Run Get-Help Get-Help and 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>]
  1. Run Update-Help -Force -Scope CurrentUser; Get-Help Get-Help on 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>]
  1. Run
Function Use-MyFunction
{
  [CmdletBinding()]
  Param
  (
    [string[]]$a,
    [switch]$b,
    [ValidateSet('u', 'v', 'w')][string]$c
  )
  Begin { }
}
Get-Help Use-MyFunction

and 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.String are abbreviated, e.g., string.
  • A parameter with ValidateSet displays the candidate values (see Category).
  • 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 ValidateSet does 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

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the updatable help XML files used by Update-Help and compare the 2025-09-08 output with the known-good 2016-11-28 files described in the issue and linked analysis. Use Get-Help Get-Help and the Use-MyFunction reproduction to inspect the generated syntax. Done means updated help preserves abbreviated types, ValidateSet values, and reader-friendly switch parameters.

Written by the indexing model from the issue text.

Assessment

Tech stack
powershell, xml
Domain
documentation
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.