Skip to content

Write-Host renders an [xml] or [XmlElement] instance as an empty line. #24508

Closed

Description

Prerequisites

Steps to reproduce

Write-Host ([xml] '<OhElement>Where art thou?</OhElement>').DocumentElement

Note: The problem may come down to the base class, System.Xml.XmlNode, implementing IEnumerable, and Write-Host not only enumerating the given instance itself, but doing so recursively, down to the leaf elements that by definition have nothing to enumerate. As argued below, no enumeration should take place at all.

Expected behavior

OhElement

i.e., the name of the element, as if you had applied .ToString() to the instance.

Note that even though such instances technically implement IEnumerable, for consistency with pipeline enumeration behavior I expect them not to be enumerated.

I suspect that the bug is related to the fact that they are enumerated.

Actual behavior

(An empty line prints.)

Error details

No response

Environment data

PowerShell 7.5.0-preview.5 (problem dates back to Windows PowerShell)

Visuals

No response

Activity

  1. SteveL-MSFT commented on Dec 12, 2024

    @SteveL-MSFT
    Member
    ([xml] '<OhElement>Where art thou?</OhElement>').DocumentElement | write-host

    does the right thing, so it's definitely an issue during enumeration

  2. daxian-dbw commented on Dec 12, 2024

    @daxian-dbw
    Member

    When piping to Write-Host, the XmlElement object is wrapped into a PSObject, and falls to the PSObject.ToString call.
    But for Write-Host ([xml] '<OhElement>Where art thou?</OhElement>').DocumentElement, the XmlElement object is NOT wrapped to PSObject, so it's processed as an enumerable. XmlNode shouldn't be considered as enumerable.

  3. daxian-dbw commented on Dec 12, 2024

    @daxian-dbw
    Member

    Write-Host renders IDictionary inconsistently depending on how the value is passed in. This is tracked by #24671.

  4. microsoft-github-policy-service commented on Dec 13, 2024

    @microsoft-github-policy-service
    Contributor

    📣 Hey Michael Klement (@mklement0), how did we do? We would love to hear your feedback with the link below! 🗣️

    🔗 https://aka.ms/PSRepoFeedback

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    In-PRIndicates that a PR is out for the issue

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions