diff --git a/src/System.Management.Automation/FormatAndOutput/common/FormatViewManager.cs b/src/System.Management.Automation/FormatAndOutput/common/FormatViewManager.cs index 891dfce6829..5b92bca04d6 100644 --- a/src/System.Management.Automation/FormatAndOutput/common/FormatViewManager.cs +++ b/src/System.Management.Automation/FormatAndOutput/common/FormatViewManager.cs @@ -470,7 +470,9 @@ private static bool IsNotRemotingProperty(string name) var isRemotingPropertyName = name.Equals(RemotingConstants.ComputerNameNoteProperty, StringComparison.OrdinalIgnoreCase) || name.Equals(RemotingConstants.ShowComputerNameNoteProperty, StringComparison.OrdinalIgnoreCase) || name.Equals(RemotingConstants.RunspaceIdNoteProperty, StringComparison.OrdinalIgnoreCase) - || name.Equals(RemotingConstants.SourceJobInstanceId, StringComparison.OrdinalIgnoreCase); + || name.Equals(RemotingConstants.SourceJobInstanceId, StringComparison.OrdinalIgnoreCase) + || name.Equals(RemotingConstants.EventObject, StringComparison.OrdinalIgnoreCase) + || name.Equals(PSObject.PSTypeNames, StringComparison.OrdinalIgnoreCase); return !isRemotingPropertyName; } diff --git a/test/powershell/engine/Formatting/BugFix.Tests.ps1 b/test/powershell/engine/Formatting/BugFix.Tests.ps1 index 5be7797134c..bb114b3981b 100644 --- a/test/powershell/engine/Formatting/BugFix.Tests.ps1 +++ b/test/powershell/engine/Formatting/BugFix.Tests.ps1 @@ -46,6 +46,27 @@ Describe "Hidden properties should not be returned by the 'FirstOrDefault' primi $outstring.Trim() | Should -BeLike "*.Hidden2" } + It "Formatting for an object with only hidden property should use 'ToString' after a Get-Member call" { + class Hidden { + hidden $Param = 'Foo' + [String]ToString() { return 'MyString' } + } + + $hiddenObjectOne = [Hidden]::new() + $hiddenObjectOne | Get-Member | Out-Null + $outstring = $hiddenObjectOne | Out-String + $outstring.Trim() | Should -BeExactly "MyString" + + class Hidden2 { + hidden $Param = 'Foo' + } + + $hiddenObjectTwo = [Hidden2]::new() + $hiddenObjectTwo | Get-Member | Out-Null + $outstring = $hiddenObjectTwo | Out-String + $outstring.Trim() | Should -BeLike "*.Hidden2" + } + It 'Formatting for an object with no-hidden property should use the default view' { class Params { $Param = 'Foo'